我使用手表来保持子菜单中的状态。
在菜单中我有:
$scope.$watch('$stateParams.colonyId', function(newVal, oldVal) {
...
}
之前有效 - 不再了。它不会抛出任何错误,newVal
和oldVal
未定义。为什么呢?
答案 0 :(得分:1)
您可以尝试将$state
注入您的控制器并使用$watch
上的$state.params
$scope.$watch(function () {
return $state.params.colonyId;
}, function (newVal, oldVal) {
if (newVal !== oldVal) {
alert('Value changed !');
}
});
答案 1 :(得分:0)
它不起作用的原因是$stateParams
服务不在$scope
对象上。 $scope.$watch("someProperty",..)
的表示法预计someProperty
对象上会$scope
。
要解决此问题,请在$stateParams
(不推荐!)上注册$scope
服务,或更改手表以观看功能:
$scope.$watch(function() {
return $stateParams.colonyId;
}, function(newVal, oldVal) {
...
}