1
我正在关注来自here的文档。这是我按照建议创建的指令。
.directive('setFocusIf', function() {
return {
link: function($scope, $element, $attr) {
$scope.$watch($attr.setFocusIf, function(value) {
if (value) { $element[0].focus(); }
});
}
};
});
而且我的标记:
<input set-focus-if="hasFocus" ng-focus="hasFocus = false">
<button type="button" ng-click="addItem()">Add</button>
addItem()
功能做一些事情,并设置的hasFocus
到true
值。但是,这不起作用,并且该元素没有得到关注。在调试时,我发现$watch
本身没有被调用。
然而,当我在按钮,而不是在addItem()
功能设置hasFocus
到true
设置像ng-click="hasFocus = true"
值,它完美的罚款。
我试着把它放在$apply
里,但似乎没有工作,而且我的内部也不是很清楚。我想我在这里错过了一些基础知识,有人可以指出这两种方法有什么区别。
这里的显示问题
尝试$元素并删除$元素[0] –
这里的问题是'$ watch'没有被触发。所以你的建议不适用于此。 –
你可以创建一个plunker吗? –