2014-07-04 30 views
2

我想在局部視圖 之類的輸入框之一中設置焦點。當與ng-include一起使用時自動對焦不起作用

及包括本由

這是工作正常,當頁面加載的第一次。但是當我改變部分自動對焦不起作用。

我相信這是因爲在頁面加載它如何能在這裏做的工作

+0

你的部分有他們自己的控制器嗎?或者他們只是標記? – vaidik

+0

在我的情況下,它只是標記 –

+0

你檢查我提供的解決方案嗎?對此有何反饋? – vaidik

回答

2

我不知道如何解決頁面重載的問題,但我認爲我們可以在這裏工作了另一種解決方案的自動對焦工作。我曾經寫過一個小指令,有條件地把注意力集中在一個輸入元素上。

下面是代碼:

function SetFocusDirective($parse) { 
    return { 
     restrict: 'A', 
     link: function (scope, element, attrs) { 
      var model = $parse(attrs.setFocus); 
      scope.$watch(model, function (value) { 
       if (value === true) { 
        element[0].focus(); 
       } 
      }); 
      element.bind('blur', function() { 
       scope.$apply(model.assign(scope, false)); 
      }); 
     } 
    }; 
} 

SetFocusDirective.$inject = ['$parse']; 

app.directive('setFocus', SetFocusDirective); 

這裏是你如何使用它:

<input type="text" ng-model="firstName" set-focus="autofocusFirstName"> 

autofocusFirstName$scope變量,它應該有一個布爾值。

因此,每當你的partials加載時,它們內部的所有指令都會被鏈接並完成他們的工作。如果你最終使用這個指令,你應該能夠實現你想要的。

+0

Viadik我沒有試過這個,因爲我正在從控制器手動設置焦點的方式做同樣的事情,你的方式更好,那麼我的.. –

相關問題