首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用Knockout映射插件动态更改属性类型

使用Knockout映射插件动态更改属性类型
EN

Stack Overflow用户
提问于 2012-10-04 15:17:38
回答 2查看 313关注 0票数 0

我需要使用knockout映射插件来动态更新带有ajax json数据的对象。但是属性类型发生了变化。例如,我接收json数据,如下所示:

{"type“:" A”,"output“:"This is A”}

{"type“:"B","output”:{"Name“:"B"}}

{"type“:"C","output”:"C1","C2","c3"}

我在前端有不同的视图模板,根据类型显示我的模型。但问题是数据(ko.mapping.fromJS,{},viewModle)不起作用,因为输出类型不固定。我如何动态地映射它?

EN

回答 2

Stack Overflow用户

发布于 2012-10-04 15:30:32

您可以创建代表每种类型的多个javascript对象。

如下所示:

代码语言:javascript
运行
复制
var mapping = {
create: function(json) {
    if(json.data.Type == 'A'){
        return new YourTypeA();

     }  
     //same for your other types
 }
}

var data = '[{ "Type": "A", "Titel": "Title1", "Description": "Description 1" }, { "Type": "B", "Titel": "Title 2", "Description": "Description 2" }, { "Type": "C", "Titel": "Title     3", "Description": "Description 3"}]';
    ko.mapping.fromJS(eval(data), mapping, viewModel);

希望这能有所帮助

票数 0
EN

Stack Overflow用户

发布于 2012-10-10 15:44:36

我自己找到了答案。只需将项放入数组中,然后映射就会很好。

代码语言:javascript
运行
复制
data = [{"type" : "A", "output" : "This is A" }]
ko.mapping.fromJS(data, {}, viewModle)
data = [{"type" : "B", "output" : {"Name" : "B"}}]
ko.mapping.fromJS(data, {}, viewModle)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12722102

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档