我使用的淘汰賽,並視圖模型綁定到我的ASP.Net MVC 4項目我的數據對象相當不錯,像這樣:淘汰賽與類範圍的屬性
$(document).ready(function() {
properties = @Html.Raw(Json.Encode(Model));
selectedProperty = properties[0];
viewModel = { properties: ko.mapping.fromJS(@Html.Raw(Json.Encode(Model))), selectedProperty: ko.observable()};
viewModel.setItem = function(item) {
viewModel.selectedProperty(item);
}
ko.applyBindings(viewModel);
現在我想修改我的JavaScript,使該邏輯被封裝在類中:
RealEstate.Search = function (properties) {
this.properties = properties;
this.selectedProperty = this.properties[0];
this.viewModel = { properties: ko.mapping.fromJS(this.properties), selectedProperty: ko.observable()};
this.viewModel.setItem = function(item) {
viewModel.selectedProperty(item);
}
ko.applyBindings(this.viewModel);
}
而且我實例化對象在我的HTML頁面,如下所示:
$(document).ready(function() {
search = new RealEstate.Search(@Html.Raw(Json.Encode(Model)));
}
現在,我收到以下錯誤:
錯誤:無法解析綁定。 消息:ReferenceError:'properties'未定義; 綁定值:的foreach:性能
這裏是綁定到視圖模型表中的HTML剪斷:
<div id="divDataTable" data-bind="with: properties">
<table id="dataTable" class="tablesorter">
<thead>
<tr>
<th>Address
</th>
<th>
Suburb
</th>
<th>Price
</th>
<th>Beds
</th>
<th>Baths
</th>
<th>Days Listed
</th>
</tr>
</thead>
<tbody data-bind="foreach: properties">
<tr data-bind="click: $root.setItem">
<td>
<label data-bind="text: $data.Street"></label>
<input data-bind="attr: { value : $index(), id : $index(), name : $index() }" type="hidden" />
</td>
<td data-bind="text: $data.Suburb"></td>
<td data-bind="text: $data.PriceFormatted"></td>
<td data-bind="text: $data.NumOfBedrooms"></td>
<td data-bind="text: $data.NumOfBathrooms"></td>
<td data-bind="text: $data.DaysListed"></td>
</tr>
</tbody>
</table>
</div>
</section>
<div id="divProperty">
<aside class="float-right" data-bind="with: selectedProperty">
<table>
<tr>
<td>
<label data-bind="text: $data.Street"></label>
</td>
<td>
<label data-bind="text: $data.PriceFormatted"></label>
</td>
</tr>
<tr>
<td colspan="2">
<img src="#" /></td>
</tr>
<tr>
<td>Beds:
<label data-bind="text: $data.NumOfBedrooms"></label>
</td>
<td>On OZMite:
<label data-bind="text: $data.DaysListed"></label>
</td>
</tr>
<tr>
<td>Baths:
<label data-bind="text: $data.NumOfBathrooms"></label>
</td>
<td>Year built:</td>
</tr>
</table>
</aside>
我將不勝感激,如果有人可以什麼我做錯了一些線索。
你確定你使用正確的視圖模型正確的看法?因爲你的代碼應該工作,實際上它可以工作:http://jsfiddle.net/xY7Gx/。您應該在'ko.applyBindings'之前註銷'this.viewModel'來查看viewmodel內部的內容。 – nemesv 2013-04-05 04:55:01
感謝您的提示。我現在有一些功能工作,並認爲它是包含我的表的div中的with:屬性屬性導致了問題。我已經更新了我的問題中的HTML ..你能否看看爲什麼with:屬性會破壞? – 2013-04-05 05:10:45