このコードはオフライン ネットワークからのものなので、ここに貼り付けることはできません。まとめています。
次のコードがあります。
<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 のクラスは「エラー」に変わりません。
奇妙なことに、ng-class 内に 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>
関数呼び出しが問題であり、式ではないようです..何かアイデアはありますか?
ありがとう