指令中的范围绑定

时间:2015-06-11 13:25:02

标签: angularjs angularjs-directive scope

我试图更新指令范围内变量的值,然后我希望看到html中的值发生了变化。但是,这不是以下示例中发生的情况。

当您按下按钮1时,一切都正确,但是当您按下按钮2时,虽然计数器增加了,但不会直接更新该值(您可以再次按下按钮1来查看)。

JS:

 $highestColumn = $objPHPExcel->getActiveSheet()->getHighestColumn();

HTML:

angular.module('app', [])
.controller('AppCtrl', function($scope) {
  $scope.count = 0;
  $scope.plus = function() {
    $scope.count += 1;
  };
})
.directive('dir', function() {
  return {
    restrict: 'A',
    scope: {
      count: '=',
      plus: '&'
    },
    link: function(scope, element, attrs, ctrl) {
      element.on('mousedown', function(event) {
        scope.plus();
        scope.count += 1;
      });
    }
  }
});

试一试:http://jsfiddle.net/k6chmnch/311/

2 个答案:

答案 0 :(得分:1)

尝试:

element.on('mousedown', function(event) {
   scope.$apply(function(){
     scope.count += 1;                
   })
});

答案 1 :(得分:0)

我看到的第一件事是你正在调用加号而不是传入引用。摆脱HTML中的parens:

<button ng-click="plus"> 1 </button>
<button dir count="count" plus="plus"> 2 </button>