私はangular-ui-bootstrap-bower#0.7.0とangular#1.2.10を使用していますが、コントローラーが「昔ながらの」モーダルであるモーダルを開くと、すべてが正常に機能します。
ただし、新しい「構文としてのコントローラー」で使用することを意図したコントローラーがある場合、それは機能しません。 angular-ui-bootstrap modal は 構文としてのコントローラー で動作しますか?バージョン0.7はそれをサポートしていますか?どうやってするの?
「コントローラー」オプションにはngController構文を使用できます。例えば:
controller: 'modalController as modal'
サンプルプランカー があります
プランカーからのコード:
<!DOCTYPE html>
<html>
<head>
<link data-require="[email protected]" data-semver="3.1.1" rel="stylesheet" href="//netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css" />
<script data-require="[email protected]" data-semver="1.2.16" src="https://code.angularjs.org/1.2.16/angular.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/angular-ui-bootstrap/0.11.0/ui-bootstrap-tpls.js"></script>
<script src="script.js"></script>
</head>
<body ng-app="app" ng-controller="demoController as demo">
<h1>{{ demo.message }}</h1>
<button class="btn btn-primary" ng-click="demo.modal()">Open modal</button>
<script type="text/ng-template" id="modal.html">
<div class="modal-header">
<h3 class="modal-title">Modal window</h3>
</div>
<div class="modal-body">
<pre>{{ modal.modalText }}</pre>
</div>
<div class="modal-footer">
<button class="btn btn-default" ng-click="modal.cancel()">Cancel</button>
</div>
</script>
</body>
</html>
script.js
angular.module('app', ['ui.bootstrap'])
.controller('demoController', function($modal) {
this.message = 'It works!'
this.modal = function() {
$modal.open({
controller: 'modalController as modal',
templateUrl: 'modal.html'
});
};
})
.controller('modalController', function($modalInstance) {
this.modalText = 'Modal Text'
this.cancel = function() {
$modalInstance.dismiss();
}
})
$uibModal.open()
に'controllerAs'
プロパティを設定します
var modalInstance = $uibModal.open({
animation:true,
templateUrl: '_myModal.html',
controller:['$scope' function($scope){
var mdCtrl=this;
mdCtrl.title="hello world";
}],
controllerAs:'mdCtrl', //set your custom controllerAs name
backdrop: 'static',
size: 'lg',
resolve: {
}
});
modalInstance.result.then(function (selectedItem) {
}, function () {
});
テンプレートで
<h2> {{mdCtrl.title}}</h2>
CoffeeScriptを使用している場合は、コントローラー関数を明示的にreturn
することを忘れないでください。
そうしないと、最後の行が返され、動作しなくなりますcontroller as
構文、そしてちなみに、このSOページ。