Angularjs UI路由器嵌套模板父变量更改未反映在子变量中

Angularjs UI路由器嵌套模板父变量更改未反映在子变量中,angularjs,angular-ui-router,Angularjs,Angular Ui Router,国家宣布这样做。如您所见,有一个称为“市场”的状态和一个称为“列表”的子状态。它们共享控制器,但具有不同的模板 .state('market', { url: '/market', templateUrl: '/market', controller: 'MarketController', access: { requiredLogin: true } }).state('marke

国家宣布这样做。如您所见,有一个称为“市场”的状态和一个称为“列表”的子状态。它们共享控制器,但具有不同的模板

.state('market', {
            url: '/market',
            templateUrl: '/market',
            controller: 'MarketController',
            access: { requiredLogin: true }
        }).state('market.list', {
            url: '/list',
            templateUrl: '/market/list',
            controller: 'MarketController',
            access: { requiredLogin: true }
        })
在控制器中,我声明了一个变量$scope.activeProduct,可以通过单击“market.*”中的按钮修改其值

我在两个模板中都放置了{{activeProduct}}。单击按钮时,值仅在“market.*”部分更改。

这是单击按钮时触发的功能:

        $scope.switchProduct = function (id) {
        $timeout(function() {
            $scope.$apply(function(){
                    $scope.activeProduct = id;
                    MarketStorageService.activeProduct = id;
                    console.log("activeproduct changed to" + id);
                }
            );
        });
    };

我只是不明白为什么在“market.list”中,值没有改变。

这是angular中范围继承的常见问题。子状态的作用域有自己的
activeProduct
副本,因此当它更改时,不会就更改咨询继承链。这一切在本书中都解释得相当清楚。快速修复方法是引用父作用域上的变量:

$scope.$parent.activeProduct


处于儿童状态。

谢谢!最小15个字符