【问题标题】:AngularJs watch in a menu controllerAngularJs 在菜单控制器中观看
【发布时间】:2017-02-08 17:00:15
【问题描述】:

我正在使用手表来维护子菜单中的状态。

在我的菜单中:

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

它以前工作过 - 现在不行了。它不会抛出任何错误,并且 newValoldVal 未定义。为什么?

【问题讨论】:

    标签: angularjs watch


    【解决方案1】:

    您可以尝试将$state 注入您的控制器并在$state.params 上使用$watch

    $scope.$watch(function () {
        return $state.params.colonyId;
    }, function (newVal, oldVal) {
        if (newVal !== oldVal) {
            alert('Value changed !');
        }
    });
    

    【讨论】:

    • 很好,然后您可以验证我的答案。也可以随意投票:-)
    【解决方案2】:

    它不起作用的原因是$stateParams 服务不在您的$scope 对象上。 $scope.$watch("someProperty",..) 的表示法期望 someProperty 在您的 $scope 对象上。

    要解决此问题,请在您的 $scope 上注册您的 $stateParams 服务(不推荐!),或者将您的手表改为观看功能:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-12-03
      • 1970-01-01
      • 2014-07-13
      • 1970-01-01
      • 2015-03-15
      • 2015-04-13
      • 2015-11-07
      相关资源
      最近更新 更多