我正嘗試根據用戶輸入更新我的模型。我有幾個(數字在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 –
我不知道你最終的目標是在這裏。我想你說的是你不想讓所有的孩子都分享控制器,但是你爲什麼要把它作爲一個變量傳遞給所有的孩子? –