AngularJs在菜单控制器中观看

时间:2017-02-05 15:56:01

标签: angularjs watch

我使用手表来保持子菜单中的状态。

在菜单中我有:

$scope.$watch('$stateParams.colonyId', function(newVal, oldVal) {
...
}

之前有效 - 不再了。它不会抛出任何错误,newValoldVal未定义。为什么呢?

2 个答案:

答案 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) {
    ...
}