2015-12-09 5 views
1

У меня есть интересная проблема с угловым формально. Я пытаюсь использовать тег «model», как показано ниже, потому что моя модель не плоская.Угловая форма вложенной модели не обновляется

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

Однако я не могу обновить модель в чистом виде. Просто замена модели или даже 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

Кто-нибудь сталкивался с этой проблемой или вы можете видеть, где я делаю что-то неправильно?

ответ

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


UPDATE: Вложенные свойства также обрабатываются fieldGroups

Se обновленный пример: http://jsbin.com/pupijoc/3/edit?js,console,output

+0

Это работает, но это не решает проблема, с которой предназначен атрибут модели. Теперь вам нужно создать другой шаблон для каждого n числа вложенных свойств или реализовать переключатель или скрыть шоу. – tuckerjt07

+0

Вложенные свойства лучше достигаются с помощью полевых групп, позвольте мне обновить пример –

+0

Это тоже работает, но это все равно хак/обходной путь. В соответствии с формальной документацией то, что я делаю, является предполагаемым вариантом использования «модели». Также очень нечисто, чтобы n слоев fieldGroups обертывали ваши поля, где некоторые могут быть двумя глубокими, а другие пять. – tuckerjt07

Смежные вопросы