【发布时间】:2015-04-03 15:18:55
【问题描述】:
我正在使用 MVC 中的 .cshtml 动态创建淘汰赛 data-bind 属性。我只想绑定 viewModel 中可用的那些属性,这些属性又是我从 restful WCF 的结果动态创建的。
所以 viewModel 中可能有也可能没有一些可用的键
例如:<span data-bind="text: cli"></span> 已创建。
但是当我绑定 viewModel 时,我收到一条错误消息,提示“在 viewModel 中找不到'cli' 属性”。但是,我想仅当 viewModel 中存在该键时才绑定该属性。
$(document).ready(function () {
debugger;
$.ajax({
cache: false,
type: "GET",
async: false,
dataType: "json",
url: requestURL,
success: function (data) {
debugger;
if (data.GetCircuitCheckStatusResponse.Status.HasErrors == false) {
networkData = data.GetCircuitCheckStatusResponse.Response.RunningStatus.networkData;
diagnosticData = data.GetCircuitCheckStatusResponse.Response.RunningStatus.diagnosticData;
diagnosticsInfo = {};
//To Create boxPanel Datas
for (var i = 0; i < networkData.length; i++) {
diagnosticsInfo[networkData[i].ItemTitle] = networkData[i].itemValue;
}
//To Bind the data using Knockout
}
},
error: function (xhr) {
debugger;
alert(xhr.responseText);
}
});
debugger;
var viewModel = ko.mapping.fromJS(diagnosticsInfo);
ko.applyBindings(viewModel);
// Every time data is received from the server:
//ko.mapping.fromJS(data, viewModel);
});
@foreach (var nameValue in childContainer.NameValueImageItemsList)
{
var cssClass = "nameValueItem floatLeft" + " " + nameValue.DataBindName;
<div class="@cssClass" style="">@nameValue.DisplayName</div>
<div class="@cssClass" style="width: 200px; margin-right: 10px;" ><span data-bind="text: CLI"></span></div>
<div class="@cssClass" style="width: 200px; margin-right: 10px;">
<a>
@if (nameValue.IconImageURL != null && nameValue.IconImageURL != "")
{
<img src="@nameValue.IconImageURL" alt="i"/>
}
</a>
</div>
<div class="clearBOTH"></div>
}
【问题讨论】:
-
我想到的唯一可能的方法是你应该这样做
<!-- ko if:cli -->//your html element <!--/ko--> -
你能澄清一下整个方法吗?
标签: javascript c# html asp.net-mvc-4 knockout.js