<div ng-app="myapp" ng-controller="mycontroller as ctrl"> <div>未使用 track by,按下重新取得之後就會重新產生DOM</div> <table border="1"> <tr><td>id</td><td>$$hashKey</td></tr> <tr ng-repeat="n in ctrl.note"> <td ng-bind="n.id"></td><td ng-bind="n.$$hashKey"></td> </tr> </table> <input type="button" ng-click="ctrl.red()" value="設定第二筆為紅色" /> <input type="button" ng-click="ctrl.reload()" value="重新取得" /> <p>======================================</p> <div>使用 track by,按下重新取得之後會使用原有DOM</div> <table border="1"> <tr><td>id</td><td>$$hashKey</td></tr> <tr ng-repeat="m in ctrl.note2 track by $index"> <td ng-bind="m.id"></td><td ng-bind="m.$$hashKey"></td> </tr> </table> <input type="button" ng-click="ctrl.red2()" value="設定第二筆為紅色" /> <input type="button" ng-click="ctrl.reload2()" value="重新取得" /> </div>
angular.module("myapp",[]).controller("mycontroller",[function(){ var self = this; function getnote() { var note = [ { id: 1 }, { id: 2 }, { id: 3 }, { id: 4 } ] return note; } self.note = getnote(); self.note2 = getnote(); //重新取得 self.reload = function() { self.note = getnote(); } self.reload2 = function() { self.note2 = getnote(); } //顏色標記 self.red = function() { $("table:eq(0) tr:eq(2)").css("background","red"); } self.red2 = function() { $("table:eq(1) tr:eq(2)").css("background","red"); } }]);