【发布时间】:2017-09-08 02:59:41
【问题描述】:
大家好,我对 KO Observable 数组和我的 UI 有一个奇怪的问题,如果我将一个固定模型传递给我的 observable 数组,这个可以工作!并正确显示选择选项,但是如果动态地使这个选项根本不显示任何东西,我已经使第一个选择选项动态工作并且它工作完美!但第二个选项根本不起作用。
这是我的模型的选项代码
var TipoModel = function(data) {
var self = this;
self.id = ko.observable(data.id);
self.name = ko.observable(data.name);
};
var HabitacionModel = function(Huespedes) {
...
self.loadRoomsType = function() {
ajax("/api/foro/loadrooms", {}, function(data) {
self.tipoHabitacion = ko.observableArray([]);
$.each(data, function(index, habitacion) {
var hab = new TipoModel({
id: habitacion.id,
name: habitacion.nombreHabitacion
});
self.tipoHabitacion.push(hab);
});
}, "GET");
console.log(self.tipoHabitacion());
}
self.loadpartnersType = function() {
ajax("/api/foro/loadpartners", {}, function(data) {
var self = this;
self.tipoHuesped = ko.observableArray([]);
$.each(data, function(index, socio) {
var x = new TipoModel({
id: socio.id,
name: socio.nombre
});
self.tipoHuesped.push(x);
});
console.log(self.tipoHuesped());
}, "GET");
}
装载室工作,但合作伙伴功能不工作,是相同的代码,只有一些变化,但它是相同的。
<select style="width:30%; height:100%; margin-top:4px; background-color:transparent; border-color:#729A2B;" data-bind="options: tipoHuesped,
value: selectedHuesped,
optionsText: 'name',
optionsValue: 'id',
optionsCaption: 'Escoge...'" required></select>
如果我从一开始就这样定义可观察数组,它就可以工作
self.tipoHuesped = ko.observableArray([
new TipoModel({
id: "1",
name: "Aeroméxico"
}),
new TipoModel({
id: "2",
name: "Magnicharters"
})
]);
我想动态地进行此操作,因为很快会添加更多数据,希望你们能帮助我。 谢谢
【问题讨论】:
-
"self.tipoHabitacion = ko.observableArray([]);"不应在 ajax 回调中 - 您创建 observableArray 的新实例,但标记已绑定到前一个。
-
同样的事情是“self.tipoHuesped = ko.observableArray([]);”
标签: javascript jquery arrays knockout.js