Angularjs如何访问$ on以外的变量

时间:2016-11-08 13:57:07

标签: angularjs javascript-events broadcast

在我的一个控制器中,我已经定义了这个:

vm.searchTerm="12345";
vm.clickevent=function(){
  $rootScope.$broadcast('transferUp',{message:vm.searchTerm});
}

clickevent()绑定到视图中的按钮:

<button type="button" ui-sref="base.searchresults" data-ng-click="vm.clickevent()"></button>

在另一个控制器中我听这个事件:

vm.searchKeyword="";
$rootScope.$on('transferUp',function(event,data){
  vm.searchKeyword=data.message;
});

在第二个控制器中,当我在$ on外面尝试console.log(vm.searchKeyword)时,会记录空格。我认为这与变量范围有关,但我不知道我做错了什么。

2 个答案:

答案 0 :(得分:1)

正常行为,当您点击按钮时获得值,因此在事件$on之外,没有设置值。您必须将此块代码视为在控制器的正常流程之外执行。 $rootScope$on(...)仅在您触发点击时执行。

希望有所帮助

答案 1 :(得分:0)

对于角度事件*.on()内更改的任何值,您需要使用$scope.$apply()来更新范围内的值。

vm.searchKeyword="";
$rootScope.$on('transferUp',function(event,data){
  vm.searchKeyword=data.message;
  $scope.$apply();
});