Я пытаюсь обновить мою модель на основе ввода пользователем. У меня есть несколько (число варьируется от 1 до x) дочерних директив, обозначенных здесь как A, B и C, которые являются только копиями одного и того же объекта. Контроллер определяется элементом MAIN page (который имеет свои собственные входы), а затем также вводится в каждую из дочерних директив.Угловая - Ввод родительского контроллера в несколько дочерних директив
На данный момент проблема заключается в том, что все дочерние директивы используют один и тот же контроллер и модель, заставляя их входы переопределять друг друга.
Если я определяю контроллер в каждой из дочерних директив индивидуально, возникает проблема сбора всех данных внутри одного контроллера.
TL; Я не уверен, как обновить мою модель с помощью входных элементов MAIN и элементов ввода child (A, B, C), сохраняя при этом гибкость добавления/удаления x числа дочерних директив.
Я ценю любые статьи или предложения, которые у вас могут быть. Я также открыт для альтернативного подхода.
MAIN шаблон:
<div ng-controller="myController as mainCntrl">
<input type="text" ng-model="mainCntrl.formdata.page_title"></input>
<div id="container">
<child-directive cntrl="mainCntrl"></child-directive> /*gets added here dynamically*/
<child-directive cntrl="mainCntrl"></child-directive>
</div>
<button type="submit" ng-click="mainCntrl.submit()">Submit</button>
</div>
MAIN контроллер:
.controller('myController', function ($scope) {
this.formdata = {
page_title: "",
objects: {}
};
this.submit = function() {
console.log(this.formdata);
}
})
определение директивы Ребенок:
.directive("childDirective", function() {
return {
restrict: "E",
scope: {
cntrl: "="
},
templateUrl: 'templateurl',
}
})
директива Детский шаблон:
<div>
<input type="text" ng-model="cntrl.formdata.objects.title"></input>
<textare ng-model="cntrl.formdata.objects.description"></textarea>
</div>
и визуализировать:
Вы говорите, дочерние директивы добавляются динамически, каков механизм? Кажется, вы не используете 'ng-repeat'. – csmithmaui
@csmithmaui, который действительно не имеет ничего общего с проблемой. У меня есть кнопка, которая добавляет «<директива child-cntrl =" mainCntrl "> child-directive>" в родительский div –
Я не уверен, что вы за конечная цель. Я думаю, вы говорите, что не хотите делиться контроллером со всеми детьми, но почему вы передаете его как переменную для всех детей? –