我不确定如何读取属性,我定义了此javascript函数
function Criteria(object1, object2, object3, object4) {
var self = this;
self.object1 = ko.observable(object1);
self.object2 = ko.observable(object2);
self.object3 = ko.observable(object3);
self.object4 = ko.observable(object4);
}
然后我定义我的主视图模型如下
var vmBudget = function () {
var self = this;
this.criterias = ko.observableArray();
this.initialize = function () {
self.criterias.push(new Criteria("test","","",""));
self.criterias.push(new Criteria("", "test2", "", ""));
};
alert(JSON.stringify(self.criterias()[0].object1()));
}
在我的HTML上
<script>
$(document).ready(function () {
var vm = new vmBudget();
ko.applyBindings(vm, document.getElementById("L09budget"));
vm.initialize();
});
</script>
一旦有了variablie Initialie,则json是{},我期望一个像
{
Object1: ""
Object2: ""
Object3: ""
Object4: ""
}
最佳答案
在初始化将任何内容推入criterias数组之前,您的警报正在触发,因此在该点上未定义criterias()[0]
。
如果将警报移到初始化函数中,以便在将项目推入数组后发生,您应该会看到预期的数据。
function Criteria(object1, object2, object3, object4) {
var self = this;
self.object1 = ko.observable(object1);
self.object2 = ko.observable(object2);
self.object3 = ko.observable(object3);
self.object4 = ko.observable(object4);
}
var vmBudget = function() {
var self = this;
this.criterias = ko.observableArray();
this.initialize = function() {
self.criterias.push(new Criteria("test", "", "", ""));
self.criterias.push(new Criteria("", "test2", "", ""));
alert(JSON.stringify(self.criterias()[0].object1()));
};
}
var vm = new vmBudget();
ko.applyBindings(vm);
vm.initialize();
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.4.2/knockout-min.js"></script>
关于javascript - 无法读取对象的子对象,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55070570/