angularjs:用于查看并保持同步的模型的中间表示

时间:2015-05-19 20:06:26

标签: angularjs

我有以下型号:

{  
    "RU": {
         name: "value a",
         other_key: "xxx",
    }, 
    "EN": {
         name: "value a",
         other_key: "xxx",
    }, 
    ... 10+ other languages ...
}  

为了呈现表单,我使用了中间格式:

[  
    { name: "value_a", languages: ["RU", "EN"] }
    ... other groups by value ...
]  

如何让这一切保持同步?可能会发生原始模型的变化 我应该将它们推入中间格式以更新视图。变化 视图可以由用户进行,我应该将它们传播到模型和 中间观点。

如果没有大量的观察者和复杂的代码,就无法想到好的解决方案。 想法?

1 个答案:

答案 0 :(得分:0)

你只会看模特&中间格式(完全观看第3个参数设置为真 - 深表)。

var surpressWatchmodel = false;
var surpressWatchinter = false;

$scope.$watch('model',function(newval,oldval){
  if(surpressWatchmodel) { surpressWatchmodel = false; return; }
      //update intermediate format.
    surpressWatchinter = true;
},true);

$scope.$watch('intermediate',function(newval,oldval){
    if(surpressWatchinter ) { surpressWatchinter = false; return; }
      //update model format.
    surpressWatchmodel= true;
},true);

对于视图,您将使用ng-model =“intermediate.name”(angular会将此作为监视项添加给您)。