我正尝试根据用户输入更新我的模型。我有几个(数字在1到x之间变化)的子指令在这里标记为A,B和C,它们只是同一个实体的副本。控制器在MAIN页面元素(它有自己的输入)上定义,然后也注入到每个子指令中。Angular - 将父控制器注入多个子指令
截至目前,问题是所有的子指令都共享相同的控制器和模型,导致它们的输入相互覆盖。
如果我在每个子指令中分别定义控制器,那么存在收集一个控制器内所有数据的问题。
TL; DR:我不确定如何使用MAIN输入元素和子指令(A,B,C)输入元素更新我的模型,同时保持添加/移除x个子指令的灵活性。
我很欣赏您可能拥有的任何文章或建议。我也接受另一种方法。
主要模板:
<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>
主控制器:
.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-directive>”到父div –
我不知道你最终的目标是在这里。我想你说的是你不想让所有的孩子都分享控制器,但是你为什么要把它作为一个变量传递给所有的孩子? –