2014-01-30 41 views
0
reportingApp.controller('tradeController', function($scope) { 
    $scope.trades = [ 
     //{ticker: 'AAPL', shares: 100, limit: 500}, 
     //{ticker: 'GE', shares: -400, limit: 600}, 
    ];   
    $scope.addNewTrade = function() { 
     console.log ('addNewTade executes'); 
      $scope.trades.push({ticker: "", shares: "", limit: ""}); 
      $("table tr:last td:first").focus(); 
    } 

focus()函數不起作用,因爲在它運行時,html行尚未更改。我應該在哪裏放置我的重點代碼?在底層數據更改後執行焦點

+4

你不應該在控制器中做DOM操作。你可以做一個指令,監視範圍的變化,你可以嘗試做一個$ timeout(function(){element.focus();}); – TestersGonnaTest

+0

請參閱:http://stackoverflow.com/questions/14833326/how-to-set-focus-in-angularjs –

+0

@TestersGonnaTest我對AngularJs很新。指令對我來說很難理解,說實話。 – zsljulius

回答

1

試試我的自定義指令:

app.directive('customAutofocus', function() { 
    return{ 
     restrict: 'A', 

     link: function(scope, element, attrs){ 
      scope.$watch(function(){ 
      return scope.$eval(attrs.customAutofocus); 
      },function (newValue){ 
       if (newValue == true){ 
        element[0].focus(); 
       } 
      }); 
     } 
    }; 
}) 

使用它:

custom-autofocus="$index == trades.length-1" 

將元素集中時,它的最後一個。

DEMO