数据绑定在指令中的事件中不起作用

时间:2014-06-24 21:00:03

标签: angularjs angular-directive

我无法使数据绑定在此指令中起作用。当我在事件处理程序中更改它们时,变量没有正确绑定

我做错了什么? > Test Fiddle

var myApp = angular.module('myApp', [])
    .directive('inputTest', function () {
    return {
        restrict: 'E',
        template: '<div class="input-group">\
                    <input type="text" class="form-control" />\
                    <br>child scope: {{myValue}}\
                  </div>',
        scope: {
            myValue: '=',
        },
        link: function (scope, element, attrs) {
            $(element).on('click', function (e) {
                alert('c');
                scope.myValue = 'clicked';
            });
            scope.myValue = 'not clicked';
        },
    };
})

function MyCtrl($scope) {
    $scope.myValue = 'parent value';
}

HTML

<div ng-controller="MyCtrl">parent scope: {{myValue}}
    <input-test my-value="myValue"></input-test>
</div>

1 个答案:

答案 0 :(得分:2)

  1. 不要忘记在事件处理程序结束时调用$scope.$apply()
  2. 由于原型继承的工作原理,第一级绑定可能无法正常工作。如果您尝试第一点但仍未获得任何结果,请尝试将myValue更深入一级:

    $scope.data.myValue = 'parent value';
    

    <input-test my-value="data.myValue"></input-test>