我正在添加一個Angular UI Modal,我將範圍傳遞給Modal Window進行雙向綁定。我使用resolve
方法來傳遞範圍值。這樣做的工作類型的工作意味着,當ng模型的值在父變化時,它反映在模態窗口內。但是,如果模態窗口內的值發生更改,則不會在父級模型中反映出來。這裏是我的代碼:Angular UI Modal 2 Way Binding Not Working
HTML:
<div ng-app="app">
<div ng-controller="ParentController">
<br />
<input type="text" ng-model="textbox.sample" />
<a class="btn btn-default" ng-click="open(textbox.sample)">Click Me</a>
<script type="text/ng-template" id="ModalContent.html">
<input type = "text" ng-model= "ngModel"/>
</script>
<br />{{ textbox }}
</div>
</div>
控制器:
var app = angular.module('app', ['ui.bootstrap']);
app.controller('ParentController', function ($scope, $modal) {
$scope.textbox = {};
// MODAL WINDOW
$scope.open = function (_ngModel) { // The ngModel is passed from open() function in template
var modalInstance = $modal.open({
templateUrl: 'ModalContent.html',
controller: ModalInstanceCtrl,
resolve: {
ngModel: function() {
return _ngModel;
}
} // end resolve
});
};
});
var ModalInstanceCtrl = function ($scope, $modalInstance, ngModel) {
$scope.ngModel = ngModel;
};
爲什麼isint 2路父和模式的實例在上面的代碼不工作之間的結合?
您真的希望看到雙向裝訂發生在哪裏,您打印的是{{textbox}}?如果是這樣的話,當你在模態中時,你不再作用於'$ scope.textbox',當你將它作爲'_ngModel'傳遞時,你創建了'$ scope.textbox'的副本,然後你modal'$ scope'項是'$ scope.ngModel' ...嘗試在父級上打印'{{ngModel}}',看看會發生什麼 – Tom
更好地將$ scope作爲選項參數傳遞給模態打開函數 – Armen
@Tom當我說2路綁定時,我的意思是我想要文本如果其中任何一個值發生變化,則在父窗口和模態窗口中輸入框進行更改。例如,在我的例子中,parent中'input'的ng模型和模態窗口中的'input'是相同的。所以當我在父'輸入'中輸入某個東西,然後打開模式時,我可以看到模態輸入具有相同的值。但是當我在模態實例的'input'中輸入內容時,它不會在父輸入上更新它。當那兩個綁定相同的ng模型時,它不應該更新嗎? – Neel