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个字符