Data binding 带绑定的knockout.js

Data binding 带绑定的knockout.js,data-binding,knockout.js,Data Binding,Knockout.js,这可能是一个非常基本的问题,但在下面的视图模型中,我通过ajax调用填充self.userData。我想在UI中显示这些信息,我认为“with”绑定是一个不错的选择。。但是,由于self.userData在调用ajax函数之前是空的,因此我从with绑定中得到一个错误 HTML 使用空的observable初始化userData,然后在调用返回后使用映射插件创建的对象设置它。即改变 self.userData = {}; 与 改变 self.userData = ko.mapping.from

这可能是一个非常基本的问题,但在下面的视图模型中,我通过ajax调用填充self.userData。我想在UI中显示这些信息,我认为“with”绑定是一个不错的选择。。但是,由于self.userData在调用ajax函数之前是空的,因此我从with绑定中得到一个错误

HTML


使用空的observable初始化userData,然后在调用返回后使用映射插件创建的对象设置它。即改变

self.userData = {};

改变

self.userData = ko.mapping.fromJS(data, userData);


使用空的observable初始化userData,然后在调用返回后使用映射插件创建的对象设置它。即改变

self.userData = {};

改变

self.userData = ko.mapping.fromJS(data, userData);


您需要首先将userData初始化为空的可观察对象(来自ajax调用的单个对象)或可观察数组(多个对象):


您需要首先将userData初始化为空的可观察对象(来自ajax调用的单个对象)或可观察数组(多个对象):

如果是这种情况(可能取决于返回的数据),他还需要根据html代码段中userData之后的绑定,将with绑定与foreach绑定交换。如果是这种情况(可能取决于返回的数据),他还需要将with绑定与foreach绑定交换,基于html代码段中以下userData的绑定。
self.userData = ko.mapping.fromJS(data, userData);
self.userData(ko.mapping.fromJS(data,userData));
self.userData = ko.observableArray([]);
self.userData = ko.observable();