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嗎? –