私はデュランダルビューモデルを次のように動作させています:
define(function (require) {
var http = require('durandal/http');
return {
subjectItem: function (data) {
var self = this;
self.Subject_ID = data.Subject_ID;
self.Subject_Name = data.Subject_Name;
},
subjects: ko.observableArray([]),
activate: function () {
var self = this;
http.ajaxRequest("get", "/api/values/getsubjects")
.done(function (allData) {
var mappedSubjects = $.map(allData, function (list) { return new self.subjectItem(list); });
self.subjects(mappedSubjects);
});
}
};
});
ただし、最初にこのビューに移動すると、ajax 呼び出しが実行されますが、dom は変更されず、再度移動するとすべて表示されます (引き続き ajax 呼び出しを実行します)。これは私のhtmlです:
<table>
<thead>
<tr>
<th>Name</th>
</tr>
</thead>
<tbody data-bind="foreach: subjects">
<tr>
<td data-bind="text: Subject_Name"></td>
</tr>
</tbody>
</table>
手がかりはありますが、私はデュランダルの使用に非常に慣れていませんが、dom を効果的に更新できないのではないかと心配しています。