在使用Knockout从Json创建对象时遇到麻烦
Trouble creating object from Json using Knockout
好的,这个场景是我有一个对象列表,它本身包含一个对象列表。我试图把外部对象在我的视图模型列表,我试图把内部对象变成一个对象,我创建了一个具有额外属性的模型,像这样-
function Tag(data, isChecked) {
var TagId = ko.observable(data.TagId);
var Description = ko.observable(data.Description);
var IsActive = ko.observable(data.IsActive);
var checked = ko.observable(isChecked)
}
我是这样做的。
$.each(parentTags, function (i, tag) {
var tempTag = tag[i];
for (Object in tag.ChildTags)
{
var checked = false;
for(checkedItem in savedTags)
{
if(tag.ChildTags[Object].TagId === savedTags[checkedItem])
{
checked = true;
}
}
//var tempChild = new Tag(tag.ChildTags[Object], checked);
tempTag.ChildTags.push(new Tag(tag.ChildTags[Object], checked));
}
viewModel.ModelTags.push(tempTag);
});
parentTags = [[object object],[object object],[object object],[object object],[object object],[object object],]
我绝对是json和knockout的新手。任何帮助都会很感激。
这是我现在拥有的,它似乎正在工作。
$.each(parentTags, function (i, tag) {
var tempTag = new Tags(JSON.parse(JSON.stringify(tag)));
tempTag.ChildTags().length = 0;
for (Object in tag.ChildTags) {
var checked = false;
for (checkedItem in savedTags) {
if (tag.ChildTags[Object].TagId === savedTags[checkedItem]) {
checked = true;
}
}
tempTag.ChildTags().push(new Tag(tag.ChildTags[Object], checked));
}
viewModel.ModelTags().push(tempTag);
});
你对var tempTag = tag[i];
做了什么?变量tag
已经是parentTags的第i个成员。
如果我没理解错的话,试试这个:
function Tag(data, isChecked) {
// not "var TagId", please.
this.TagId = ko.observable(data.TagId);
this.Description = ko.observable(data.Description);
this.IsActive = ko.observable(data.IsActive);
this.checked = ko.observable(isChecked);
}
$.each(parentTags, function (i, tag) {
// map each child tag into a Tag object
var tags = $.map(tag.ChildTags, function(cTag) {
return new Tag(cTag, $.inArray(cTag.TagId, savedTags));
});
// replace with Tag objects
tag.ChildTags = tags;
// push modified tag onto vm
viewModel.ModelTags.push(tag);
});
相关文章:
- 在创建对象后附加一个jquery事件
- 错误:自动化服务器可以't创建对象
- 如何在不使用 new 关键字的情况下从函数创建对象
- 文本表示法VS.构造函数,用于在JavaScript中创建对象
- 创建对象函数原型和代码是错误的
- 使用Undercore创建对象集合
- 如何在JavaScript中创建对象时使用变量的值
- 正在创建对象的递归列表
- 这两种不同的创建对象文字的方法有什么区别
- ES6 const,用于在JavaScript中创建对象原型;这是一种模式吗
- 使用字符串作为名称创建对象
- 使用参数创建对象
- 如何在JS中创建对象的可变和不可变副本
- 用javascript创建对象的dynamic数组
- Javascript,用vars创建对象的最佳方法
- 离子幻灯片框中未创建对象
- 在创建对象时调用javascript函数
- JavaScript - 有没有办法动态创建对象的新实例
- 为什么使用 Object('123') 创建对象会创建一个 String() 对象,但 typeof 是“对象”
- 在使用Knockout从Json创建对象时遇到麻烦