Knockout.js KnockoutJS不渲染
我正在为一个新网站尝试一个javscript框架,就在今天,我开始使用knockoutjs。现在我被卡住了,因为数据没有呈现。希望任何人都能给我指出正确的方向。我正在使用knockoutjs2.2.1和knockoutmapping 2.4.0 我的viewmodel如下所示:Knockout.js KnockoutJS不渲染,knockout.js,knockout-mapping-plugin,Knockout.js,Knockout Mapping Plugin,我正在为一个新网站尝试一个javscript框架,就在今天,我开始使用knockoutjs。现在我被卡住了,因为数据没有呈现。希望任何人都能给我指出正确的方向。我正在使用knockoutjs2.2.1和knockoutmapping 2.4.0 我的viewmodel如下所示: var UserModel = function () { var self = this; self.user = ko.observable(); // Load user. sel
var UserModel = function () {
var self = this;
self.user = ko.observable();
// Load user.
self.load = function() {
self.loadUser();
};
self.loadUser = function() {
// Load the main user object
$.getJSON('/api/v1/users/17368',
function(data) {
var loadedUser = {};
console.dir(data);
ko.mapping.fromJS(data, {}, loadedUser);
self.user(loadedUser);
}
);
};
}
$(document).ready(function () {
var userModel = new UserModel();
ko.applyBindings(userModel);
userModel.load();
})
Array[1]
0: Object
id: "17368"
email: "john@domain.net"
firstname: "John"
lastname: "Morris"
phone1: "000-1234567"
我可以看到数据加载到ajax请求中。更新:到目前为止,我尝试了不同的映射,但没有成功:
ko.mapping.fromJS(data, {}, loadedUser);
ko.mapping.fromJS(data, loadedUser);
在loadUser中,向控制台输出的数据如下所示:
var UserModel = function () {
var self = this;
self.user = ko.observable();
// Load user.
self.load = function() {
self.loadUser();
};
self.loadUser = function() {
// Load the main user object
$.getJSON('/api/v1/users/17368',
function(data) {
var loadedUser = {};
console.dir(data);
ko.mapping.fromJS(data, {}, loadedUser);
self.user(loadedUser);
}
);
};
}
$(document).ready(function () {
var userModel = new UserModel();
ko.applyBindings(userModel);
userModel.load();
})
Array[1]
0: Object
id: "17368"
email: "john@domain.net"
firstname: "John"
lastname: "Morris"
phone1: "000-1234567"
但是,此数据绑定片段中没有呈现任何内容。它因缺少姓氏或名而阻塞:
<table>
<thead>
<tr>
<th>lastname</th>
<th>firstname</th>
</tr>
</thead>
<tbody data-bind="foreach: user">
<tr>
<td><span data-bind="text: lastname"></span></td>
<td><span data-bind="text: firstname"></span></td>
</tr>
</tbody>
</table>
姓氏
名字
您不应该为用户使用foreach
绑定,因为用户不是可观察数组
。将与
绑定一起使用:
<tbody data-bind="with: user">
<tr>
<td><span data-bind="text: lastname"></span></td>
<td><span data-bind="text: firstname"></span></td>
</tr>
</tbody>
self.user
user如果您想拥有多个用户,它不应该是一个ko.observearray()
,好的,谢谢。这可能更近了一步,但不幸的是,这没有什么区别-消息:ReferenceError:lastname没有定义代码>。映射中可能存在错误。我看到getJson返回一个数组,但您只需要一项。尝试以这种方式调用映射:ko.mapping.fromJS(数据[0],{},loadedUser);