我不想編寫複雜的指令來集中注意力。如果方法使用純js,那麼這是可以接受的。我的問題是如何捕捉角度的ng顯示。捕獲展示事件和焦點輸入字段
<a ng-click="showInput=true">show</a>
<input type="text" ng-show="showInput" />
上面的代碼顯示輸入,如何將它集中在它的外觀?
我不想編寫複雜的指令來集中注意力。如果方法使用純js,那麼這是可以接受的。我的問題是如何捕捉角度的ng顯示。捕獲展示事件和焦點輸入字段
<a ng-click="showInput=true">show</a>
<input type="text" ng-show="showInput" />
上面的代碼顯示輸入,如何將它集中在它的外觀?
您可以嘗試使用一個簡單的指令,像這樣的:
app.directive('FocusOnVisibility', function() {
return function (scope, element, attrs) {
//Watch the showInput model
scope.$watch('showInput', function() {
//If the model changes to true, focus on the element
if (scope.showInput === true) {
//Assumes that the element has the focus method
//If not, then you can have your own logic to focus here
element.focus();
}
});
};
});
然後,您可以使用此指令在標籤爲:
<input type="text" ng-show="showInput" focus-on-visibility>
不起作用,它是有道理的,但只是不起作用。找不到錯誤。 – user3398172
如果不起作用,則不應將其標記爲答案。 – DynamiteReed
您可以添加此指令:
app.directive('showFocus', function($timeout) {
return function(scope, element, attrs) {
scope.$watch(attrs.showFocus,
function (newValue) {
$timeout(function() {
newValue && element.focus();
});
},true);
};
});
並像這樣使用它:
<input type="text" ng-show="showInput" show-focus="showInput">
不確定是否需要您的項目,但請記住,您無法以編程方式將'focus'觸發到iOS設備上的元素上(必須通過點擊/點按操作),但是您可以遍歷元素第一個重點是設置http://stackoverflow.com/questions/18728166/programatically-focus-on-next-input-field-in-mobile-safari – haxxxton