我有一个有趣的角度形式问题。我试图使用'模型'标签如下所示,因为我的模型不平坦。
{
'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
有没有人遇到过这个问题,或者你能看出我做错了什么?
答案 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处理