更改指令中的范围值

时间:2014-01-10 14:23:01

标签: javascript angularjs

通过指令分配新值的最佳方法是什么?双向数据绑定。

我在这里尝试了一个小提琴。 http://jsfiddle.net/user1572526/grLfD/2/。但它不起作用。

我的指示:

myApp.directive('highlighter', function () {
    return {
        restrict: 'A',
        replace: true,
               scope: {
                    activeInput: '='
                },
        link: function (scope, element, attrs) {
            element.bind('click', function () {
                scope.activeInput = attrs.setInput 
            })
        }
    }
});

我的控制员:

function MyCtrl($scope) {
             $scope.active = {
                value : true
            };
}

我的观点:

<h1 highlighter active-input="active.value" set-input="false">Click me to update Value in scope: {{active}}</h1>

所以我想做的是使用给定的属性setInput更新scope.active。

我在这里做错了什么想法?

1 个答案:

答案 0 :(得分:2)

使用element.bind,你离开了Angular的领域,所以你需要告诉Angular发生了什么事。您可以使用scope.$apply函数执行此操作:

scope.$apply(function(){
  scope.activeInput = attrs.setInput;
});

这是一个updated jsfiddle