HTML:
<div ng-controller="MyCtrl">
<button my-event-directive>Click me</button>
<div>{{secret}}</div>
</div>
JS:
var myApp = angular.module('myApp',[]);
myApp.directive('myEventDirective', function() {
return {
link: function(scope, element) {
element.on('click', function(event){
scope.$emit('myEvent', {secret: 'aaa'});
});
}
}
})
function MyCtrl($scope) {
$scope.secret = 'bbb';
$scope.$on('myEvent', function(event, data){
alert('event received!');
$scope.secret = data.secret;
});
}
当我点击按钮时,在控制器中接收到了事件(弹出警告)。然而,{{secret}}
绑定并没有更新其值。为什么?
当然,在真实的代码中,我的事件创建更加复杂。
$apply
:http://jsfiddle.net/HB7LU/5325/(注:$apply
是 AngularJS 框架中的一个函数,用于将数据模型的变化同步到视图层。) - Ivan Chernykh