AngularJS指令:在UI中未反映的更改$scope

13 浏览
0 Comments

AngularJS指令:在UI中未反映的更改$scope

我正在尝试使用AngularJS创建一些自定义元素,并将一些事件绑定到它上面,然后我注意到当在绑定函数中使用$scope.var时,UI不会更新。

以下是一个描述问题的简化示例:

HTML:



  
    
    
  
  
  {{result}}
  
  
  
  

JS:

function Ctrl2($scope) {
    $scope.result = '点击按钮来改变这个字符串';
    $scope.a = function (e) {
        $scope.result = 'A';
    }
    $scope.b = function (e) {
        $scope.result = 'B';
    }
}
var mod = angular.module('test', []);
mod.directive('myButton', function () {
    return function (scope, element, attrs) {
        //从这里改变scope.result是有效的
        //但在绑定函数中不起作用
        //scope.result = 'B';
        element.bind('click', scope.b);
    }
});

DEMO:[http://plnkr.co/edit/g3S56xez6Q90mjbFogkL?p=preview](http://plnkr.co/edit/g3S56xez6Q90mjbFogkL?p=preview)

基本上,我将`click`事件绑定到`my-button`上,并希望在用户点击按钮B时更改`$scope.result`(类似于按钮A上的`ng-click:a()`)。但是,如果我这样做,视图不会更新为新的`$scope.result`。

我做错了什么?谢谢。

0