此代碼來自離線網絡,因此我無法將其粘貼到此處。我正在總結它。當表達式重新評估時,ng-class不適用
我有以下代碼:
<tr ng-repeat="agent in agents" ng-class="agent.getClass()">
<td>{{agent.server}}</td>
<td>{{agent.status}}</td>
</tr>
的agents
列表可以通過Ajax請求加載。
app.js:
angular.module('agentsApp', [])
.controller('agentsController', function($scope, $http, $interval) {
$scope.agents = {};
$interval(function() {
$http.get('/AgentsServlet').success(function(data) {
angular.forEach(data, function(agent) {
$scope.agents[agent.server] = new Agent(agent.server, agent.status);
});
});
}, 1000);
});
Agent.js
var Agent = function(server, status) {
this.server = server;
this.status = status;
}
Agent.prototype.getClass = function() {
return {
success: this.status === 'RUNNING',
error: this.status === 'ERROR'
};
}
根據記錄,從一個簡單的文本文件AgentsServlet
加載代理和他們的數據。
現在,當我改變文件內容時,下一個ajax請求會成功加載和更新表的內容但是,ng-class不會被改變。 例如,如果我將代理的狀態從RUNNING更改爲ERROR,則其tr類不會更改爲「錯誤」。
奇怪的是,如果我把納克級內的getClass()的邏輯,它的工作原理,如:
<tr ng-repeat="agent in agents"
ng-class="{success: agent.status==='RUNNING', error: agent.status==='ERROR'}">
<td>{{agent.server}}</td>
<td>{{agent.status}}</td>
</tr>
看來,函數調用的問題,而不是表達.. 任何想法?
感謝
ng-class假設從getClass()返回一個cssClass =>表達式的數組。它不應該改變任何領域。字段狀態正在ajax成功回調中設置。 – orirab