用于2个控制器进行通信的参考存储器

时间:2015-05-17 21:22:15

标签: javascript angularjs

在角度方面,我使用2个控制器的服务进行通信并共享搜索框输入变量。

我使用kickSearch.box ... obj.property引用内存。但出于某种原因,当kickSearch.box更新$scope.searchBox未反映更改时:

angular.module('ucp.kick').controller('kickSearch', function($scope, $location, kickSearch) {
  initialize = function() {
    var terms;
    $scope.searchBox = kickSearch.box;
    terms = $location.search().device || $location.search().dc || [];
    kickSearch.box = _.isArray(terms) ? terms.join(" ") : terms;
    if ($scope.searchBox.length) {
      return $scope.submitSearch();
    }
  };
  initialize();
 <input type="text" class="form-control" placeholder="Enter device #" ng-model="searchBox" >

1 个答案:

答案 0 :(得分:1)

这是因为$scope.searchBox不会引用kickSearch.box,而只会引用它的值。

在服务更新时,有几种方法可以更新控制器。一种方法是使用类似于$rootScope.$broadcast$rootScope.$emit的内容来通知控制器该服务已更新。然后,控制器可以直接从服务请求更新的值。