keydown的Angular指令打破了其他功能

时间:2013-07-16 00:26:32

标签: angularjs angularjs-directive angularjs-scope

我正在尝试收听表单上的keydown事件。为此,我已经构建了一个带有“keydown”属性的指令,如下所示:

var keydown = function() {
    return {
        restrict: 'A',
        scope: {
            keydown: '=keydown'
        },
        link: function(scope, elem, attr) {
            $(elem).keydown(function(evt){
                scope.keydown(evt);
            });
        }
    };
};

现在我将它添加到我的输入标记:

<input class="search-input" type="text" ng-model="queryStr" ng-change="redrawUI()" keydown="processSearchBox" >

现在我的keydown函数被调用并且工作正常...但是现在我的模型不再绑定到输入表单字段...如果我更改模型表单不更新

1 个答案:

答案 0 :(得分:1)

问题是你正在创建一个新的“隔离”范围,它与redrawUI()所在的范围分离。请查看this fiddle,了解从父作用域继承并使用scope.$eval处理事件的替代方法。