Angular-Formly嵌套模型不更新

时间:2015-12-09 02:32:46

标签: angularjs angular-formly

我有一个有趣的角度形式问题。我试图使用'模型'标签如下所示,因为我的模型不平坦。

{
    'key': 'last',
    'model': 'model.name',
    'templateOptions: {}
} 

但是,我无法以干净的方式更新模型。简单地使用包含更新值的匹配模型替换model或甚至model.name不会导致模型更新视图。

var newModel = {
    name: {
        first: 'Gandalf',
        last: 'The White'
    }
};
self.model = {
    name: {
        first: 'Gandalf',
        last: 'The Grey'
    }
};
function setNewLastName() {
    self.model = newModel;
}
setNewLastName();

但是,如果我深入查看特定属性,它将按预期工作。

self.model.name.last = self.newModel.name.last;

这是指向JSBin的链接,其中值使用上面的向下钻取方法进行更新。 Drill-down JSBin

另一个尝试通过分配不更新的新模型来更新模型的JSBin。 Assign Model JSBin

有没有人遇到过这个问题,或者你能看出我做错了什么?

1 个答案:

答案 0 :(得分:2)

您替换每个键的模型,因此您永远不会看到更改。

您需要做的是匹配密钥本身的模型

vm.fields = [
  {
    key: 'name.first', // <-- HERE
    type: 'input',
    //model: vm.model.name, //Wrong
    templateOptions: {
      label: 'First Name'
    }
  },
  {
    key: 'name.first', // <-- AND HERE
    type: 'input',
    //model: vm.model.name, //Wrong
    templateOptions: {
      label: 'Last Name'
    }
  },
  //...
];

查看更正的示例:http://jsbin.com/pupijoc/1/edit?js,console,output

更新:嵌套属性也由fieldGroups处理

Se更新示例:http://jsbin.com/pupijoc/3/edit?js,console,output