AngularJS, применяющий модель к элементам динамической формы

#angularjs #angularjs-directive

#angularjs #angularjs-директива

Вопрос:

Я пытаюсь привязать данные модели из контроллера к шаблону директивы. Шаблон директивы повторяет типы ввода формы на основе объекта формы из контроллера.

Цель состоит в том, чтобы использовать эту директиву в нескольких местах и привязывать соответствующую модель к форме, а не создавать форму каждый раз.

Я нашел примеры с использованием transclusion и изолированных областей, однако каждый из примеров, с которыми я столкнулся, похоже, имеет жестко заданные свойства модели.

Вот jsfiddle, который, надеюсь, лучше объясняет, чего я пытаюсь достичь.

http://jsfiddle.net/N9rSa/14/

 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