ブートストラップモーダルを使用しているときに角度jを使用してスコープの値を変更できません。基本的に私は、私がcontroller.jsファイルに保存したモーダルを開く関数を呼び出しています。そして、スコープの値を修正してモーダルダイアログボックスに表示しようとしています。Angular JSとBootstrap Modalのデータバインディングの問題
私のjsコンポーネントの1つにclickイベントを追加しました。
eventClick: function(event, element) {
var $scope = angular.element("#eRotaController").scope();
$scope.OpenModal("addEventModal", false, event);
}
html要素(モーダルダイアログ)のパート:
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal">×</button>
<h4 class="modal-title">{{misc.modalTitles}}</h4>
</div>
最後にOpenModal機能や変数
// Variables
$scope.misc = {
modalTitle: "",
showRemoveEvent : false
};
$scope.OpenModal = function (modal, isNew, event)
{
if (isNew) {
$scope.misc.modalTitle = "Add new Event";
}
else{
$scope.misc.modalTitle = "Update event for: " + event.title;
$scope.misc.showRemoveEvent = true;
console.log($scope);
}
$("#" + modal).modal('show');
}
それはすべての変更を反映していないOpenModal関数内でIは、例えばmodalTitleを更新モーダルを開くとき。
私はそれがモーダルな問題であるかどうかを調べるために簡単な例を作成しました。私が追加した
クイックテスト:
<button ng-click="OpenModal2()"></button>
{{misc.showRemoveEvent}}
$scope.OpenModal2 = function()
{
$scope.misc.modalTitle = "Update event for: " + event.title;
$scope.misc.showRemoveEvent = true;
}
正常に動作します。
だから、メソッドがhtml要素から直接呼び出されたときに正しく動作しますが、コントローラへの参照を使用してjsファイルから呼び出されたときに失敗:
var $scope = angular.element("#eRotaController").scope();
$scope.OpenModal("addEventModal", false, event);
は動作しません
実際には、モーダルブートストラップでは何もできません。 OpenModal内でスコープの値を変更しようとしましたが、まだ動作しません。 –
通常のブートストラップの代わりに[ui-bootstrap](https://angular-ui.github.io/bootstrap/)を使用することを強くお勧めします。角度で実装されたブートストラップです(ディレクティブなどでコードをきれいに保つ) –
Thanks Martijnそれ以上の調査の後、ブートストラップはここでは問題になりません。基本的にDOMから直接jsから呼び出された関数はスコープ値を更新するだけですが、DOMの変更を反映していません。 –