2014-07-22 114 views
1

我需要为一个ko可观察对象分配一个javascript对象。 这个对象有75个特性,如果我写的东西是这样的:KnockoutJS - 将js对象分配给可观察的viewmodel

viewmodel.myprop(obj); 

它需要非常非常耗费时间和网页崩溃。

我想周围对象属性使用for循环迭代工作,但我不能写正确赋值指令:

for(property in obj){ 
    // ???? 
} 

我怎样才能做到这一点?

谢谢

+0

我无法理解您的具体问题。你是否同时设置了所有75个属性,导致某个计算的属性在该非常短的时间内计算了75次?如果是这样,使用循环不会解决问题; [改变观察,但不通知订阅者在knockout.js](http://stackoverflow.com/q/17983118/247702)可能是有用的。 – Stijn

+0

我同意一定有一些其他的竞赛条件有效。将对象设置为可观察值不应导致这样的问题。 –

+0

如何调试knockoutjs作业? – gravi

回答

0

在此代码特性动态地创建

for (property in obj) { 
     if (obj.hasOwnProperty(property)) { 
      //here you can check all the values on each properties 
      console.log(property +" - "+obj[property]); 
      //Here new properties are registering for viewmodel 
      this[property] = ko.observable(obj[property]); 
     } 
} 
console.log(this.MyProperty()); 

myProperty的是你的大物体上的一些匹配的属性名称。

+0

我需要指定obj viewmodel.myprop(),但以不同的方式viewmodel.myprop(obj) – gravi

+0

刚刚尝试,但没有做任何事情。特别是viewmodel道具是有价值的(如果我检查控制台),但在页面中没有效果。 – gravi

+0

它适用于我的示例应用程序。在控制台中,我也可以看到属性值。我觉得你错过了某些东西。我再次编辑了代码。请检查它。 –

相关问题