#angularjs #angularjs-directive
#angularjs #angularjs-директива
Вопрос:
Я пытаюсь привязать данные модели из контроллера к шаблону директивы. Шаблон директивы повторяет типы ввода формы на основе объекта формы из контроллера.
Цель состоит в том, чтобы использовать эту директиву в нескольких местах и привязывать соответствующую модель к форме, а не создавать форму каждый раз.
Я нашел примеры с использованием transclusion и изолированных областей, однако каждый из примеров, с которыми я столкнулся, похоже, имеет жестко заданные свойства модели.
Вот jsfiddle, который, надеюсь, лучше объясняет, чего я пытаюсь достичь.
app.controller('FormCtrl',function($scope) {
$scope.form = [
{label:'First',type:'text',name:'first_name'},
{label:'Last',type:'text',name:'last_name'}
];
$scope.person = {first_name:'Jimmy',last_name:'Page'};
});
app.directive('formelements',function() {
return {
restrict: 'E',
scope:false,
template: '<div ng-repeat="elements in form"><input type="text" ng-model="field.name"></div>'
}
});
Спасибо за любую помощь.
Ответ №1:
В качестве шаблона можно использовать следующее:
template: '<div ng-repeat="element in form">'
'<input type="text" ng-model="person[element.name]"></div>'
Скрипка: http://jsfiddle.net/g5Mzs /
По сути name
, поле используется для определения индекса внутри person
объекта.
Комментарии:
1. Спасибо за помощь. Я подумал, что могу использовать form_model в качестве своего объекта для применения к форме каждый раз, когда это необходимо: jsfiddle.net/N9rSa