在我的一个控制器中,我已经定义了这个:
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)
时,会记录空格。我认为这与变量范围有关,但我不知道我做错了什么。
答案 0 :(得分:1)
正常行为,当您点击按钮时获得值,因此在事件$on
之外,没有设置值。您必须将此块代码视为在控制器的正常流程之外执行。 $rootScope
。$on(...)
仅在您触发点击时执行。
希望有所帮助
答案 1 :(得分:0)
对于角度事件*.on()
内更改的任何值,您需要使用$scope.$apply()
来更新范围内的值。
vm.searchKeyword="";
$rootScope.$on('transferUp',function(event,data){
vm.searchKeyword=data.message;
$scope.$apply();
});