在角度方面,我使用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" >
答案 0 :(得分:1)
这是因为$scope.searchBox
不会引用kickSearch.box
,而只会引用它的值。
在服务更新时,有几种方法可以更新控制器。一种方法是使用类似于$rootScope.$broadcast
或$rootScope.$emit
的内容来通知控制器该服务已更新。然后,控制器可以直接从服务请求更新的值。