在angularjs控制器中初始化和$ watch

时间:2014-06-10 11:56:27

标签: javascript angularjs controller initialization

我的部分页面由控制器处理。它取决于全局属性$ scope.selected。我必须在控制器启动时以及$ scope.selected的值更改时初始化控制器。

.controller ('Details', ['$scope',  function ($scope) {
  function init () {
    $scope.viewProperty = complexOperation($scope.selected);
  }
  $scope.$watch ('selected', init);
  init ();
}])

<span ng-if="selected.gto" ng-controller="Details">
    {{viewProperty}}
</span>

我在控制器初始化和$ scope.selected的更改时调用init。 这对我来说不太好,有更好的解决方案吗?

1 个答案:

答案 0 :(得分:0)

$watch()通常用于指令而不是控制器。同样评论提到init()在控制器初始化时被调用一次,因为$watch在初始化时调用了一次监听器。这是一篇关于这种做法的文章Angular JS - you probably shouldn't use $watch in your controllers.