Jquery 属性未定义
我试图理解knockout的语法,但遇到了一些问题 my ko viewmodel的示例Jquery 属性未定义,jquery,knockout.js,Jquery,Knockout.js,我试图理解knockout的语法,但遇到了一些问题 my ko viewmodel的示例 var Market = function (e) { var self = this; self.MarketId = ko.observable(e ? e.MarketId : ''); self.Description = ko.observable(e ? e.Description : ''); }; var MarketAddViewModel = function
var Market = function (e) {
var self = this;
self.MarketId = ko.observable(e ? e.MarketId : '');
self.Description = ko.observable(e ? e.Description : '');
};
var MarketAddViewModel = function () {
var self = this;
var url = "/api/market";
self.newMarket = ko.observable(new Market());
// Save market
saveMarket = function (item) {
$.ajax({
type: 'POST',
url: url,
data: ko.toJS(item),
success: function (data) {
// SUCCESS
},
error: function (err) {
var err = JSON.parse(err.responseText);
var errors = "";
for (var key in err) {
if (err.hasOwnProperty(key)) {
errors += key.replace("employee.", "") + " : " + err[key];
}
}
alert('error');
//$("<div></div>").html(errors).dialog({ modal: true, title: JSON.parse(err.responseText).Message, buttons: { "Ok": function () { $(this).dialog("close"); } } }).show();
},
complete: function () {
// complete
}
});
};
};
然后是HTML元素
<input data-bind="value: Description" type="text" class="required input-xxlarge" name="description" id="description" />
但当加载此页面时,我收到“描述未定义”
有线索吗?我想应该有线索
<input data-bind="value: newMarket().Description" type="text" class="required input-xxlarge" name="description" id="description" />
(注意
newMarket()。
)因为它是MarketAddViewModel
实例的属性。括号将提取可观察值,以便提取其“Description”属性。您可以使用with绑定,它将子元素的上下文更改为新市场上下文
<div data-bind="with: newMarket">
<input data-bind="value: Description" type="text" class="required input-xxlarge" name="description" id="description" />
</div>
编辑:我也可以借此机会为我的约定而不是配置库做一些公关
上面的语法如下所示
<div data-name="newMarket">
<input data-name="Description" type="text" class="required input-xxlarge" name="description" id="description" />
</div>
<div data-name="newMarket">
<input data-name="Description" type="text" class="required input-xxlarge" name="description" id="description" />
</div>