【发布时间】:2017-02-08 17:00:15
【问题描述】:
我正在使用手表来维护子菜单中的状态。
在我的菜单中:
$scope.$watch('$stateParams.colonyId', function(newVal, oldVal) {
...
}
它以前工作过 - 现在不行了。它不会抛出任何错误,并且 newVal 和 oldVal 未定义。为什么?
【问题讨论】:
我正在使用手表来维护子菜单中的状态。
在我的菜单中:
$scope.$watch('$stateParams.colonyId', function(newVal, oldVal) {
...
}
它以前工作过 - 现在不行了。它不会抛出任何错误,并且 newVal 和 oldVal 未定义。为什么?
【问题讨论】:
您可以尝试将$state 注入您的控制器并在$state.params 上使用$watch
$scope.$watch(function () {
return $state.params.colonyId;
}, function (newVal, oldVal) {
if (newVal !== oldVal) {
alert('Value changed !');
}
});
【讨论】:
它不起作用的原因是$stateParams 服务不在您的$scope 对象上。 $scope.$watch("someProperty",..) 的表示法期望 someProperty 在您的 $scope 对象上。
要解决此问题,请在您的 $scope 上注册您的 $stateParams 服务(不推荐!),或者将您的手表改为观看功能:
$scope.$watch(function() {
return $stateParams.colonyId;
}, function(newVal, oldVal) {
...
}
【讨论】: