這是我第一次在knockoutjs上刺傷。代碼如下。 getJSON調用正在工作。我可以在Fiddler中看到響應,並且已經使用JSLint進行了驗證(即JSON響應)。我可以看到該陣列正在Chrome控制檯中進行填充,但出於某種原因,用戶界面未使用從服務器獲取的數據進行更新。任何人都可以看到我錯過了什麼?KnockoutJS UI在第一次加載時沒有約束力
<script type="text/javascript">
function Section(data) {
this.ID = ko.observable(data.ID);
this.Name = ko.observable(data.Name);
this.Selected = ko.observable(data.Selected);
}
function SectionsViewModel() {
var self = this;
self.ViewName = ko.observable();
self.Sections = ko.observableArray([]);
// Initial load
$.getJSON("/Service/view/[email protected]",
function (allData) {
self.ViewName = allData.ViewName;
var mappedSections = $.map(allData.Sections,
function (item) {
return new Section(item) });
self.Sections = mappedSections;
});
}
ko.applyBindings(new SectionsViewModel());
</script>
<h2>Edit View</h2>
<table class="dataEntryTable">
<thead>
<tr>
<th>ID</th>
<th>Name</th>
<th>Selected</th>
</tr>
</thead>
<tbody data-bind="foreach: Sections">
<tr>
<td data-bind="text: ID()"></td>
<td data-bind="text: Name()"></td>
<td><input type="checkbox" data-bind="checked: Selected()" /></td>
</tr>
</tbody>
</table>
更新與'self.ViewName(newValue)'而不是'self.ViewName = newValue' –
這已被標記爲不顯示任何研究,不明確或無助。研究工作包括瀏覽knockoutjs網站上的所有教程,並使用VS調試器,Chrome控制檯,JSLint和Fiddler檢查消息鏈的每個部分。這個問題非常清楚,對任何遵循相同路線的人都是最有幫助的。sheesh有些人需要什麼:p –