使用 controller as 和 vm 在 AngularJS 中传递模态数据
Passing modal data in AngularJS using controller as and vm
我有一对看起来像这样的控制器:
(function () {
'use strict';
angular
.module('room')
.controller('RoomGetCtrl', Room)
.controller('TestCtrl', Test)
Room.$inject = [...'$uibModal'...];
Test.$inject = [...'$uibModalInstance'...];
function Room(..., $scope, $uibModal) {
var vm = this;
...
vm.open = function (size) {
vm.modalInstance = $uibModal.open({
templateUrl: 'modal.html',
controller: 'TestCtrl as vm',
});
};
}
function Test(???){
this.modalText = 'Modal Text'
this.modalCancel = function() {
???.dismiss();
}
}
})();
视图如下所示:
<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>{{ vm.modalText }}</pre>
</div>
<div class="modal-footer">
<button class="btn btn-default" ng-click="vm.modalCancel()">Cancel</button>
</div>
</script>
<button type="button" class="btn btn-default" ng-click="vm.open()">Open me!</button>
...
上面的工作,除了我无法弄清楚上面 Test()
中的 ???
中的内容。我尝试了各种方法,每当我单击取消按钮时,控制台都会根据 "x.dismiss is not a function," 行记录错误,其中 "x" 是我尝试使用的任何内容。
有什么帮助吗?
没关系。我立即自己解决了(我发誓,发布问题让我思考得更好)。无论如何,这里:
(function () {
'use strict';
angular
.module('room')
.controller('RoomGetCtrl', Room)
.controller('TestCtrl', Test)
Room.$inject = [...,'$uibModal'];
Test.$inject = [$uibModalInstance];
function Room(..., $uibModal) {
/*jshint validthis: true */
var vm = this;
...
vm.open = function () {
vm.modalInstance = $uibModal.open({
templateUrl: 'modal.html',
controller: 'TestCtrl as vm',
});
};
}
function Test($uibModalInstance){
this.modalText = 'Modal Text'
this.modalCancel = function() {
$uibModalInstance.dismiss();
}
}
})();
真的很简单。 $uibModalInstance.dismiss();
。它就在 documentation
感叹
我有一对看起来像这样的控制器:
(function () {
'use strict';
angular
.module('room')
.controller('RoomGetCtrl', Room)
.controller('TestCtrl', Test)
Room.$inject = [...'$uibModal'...];
Test.$inject = [...'$uibModalInstance'...];
function Room(..., $scope, $uibModal) {
var vm = this;
...
vm.open = function (size) {
vm.modalInstance = $uibModal.open({
templateUrl: 'modal.html',
controller: 'TestCtrl as vm',
});
};
}
function Test(???){
this.modalText = 'Modal Text'
this.modalCancel = function() {
???.dismiss();
}
}
})();
视图如下所示:
<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>{{ vm.modalText }}</pre>
</div>
<div class="modal-footer">
<button class="btn btn-default" ng-click="vm.modalCancel()">Cancel</button>
</div>
</script>
<button type="button" class="btn btn-default" ng-click="vm.open()">Open me!</button>
...
上面的工作,除了我无法弄清楚上面 Test()
中的 ???
中的内容。我尝试了各种方法,每当我单击取消按钮时,控制台都会根据 "x.dismiss is not a function," 行记录错误,其中 "x" 是我尝试使用的任何内容。
有什么帮助吗?
没关系。我立即自己解决了(我发誓,发布问题让我思考得更好)。无论如何,这里:
(function () {
'use strict';
angular
.module('room')
.controller('RoomGetCtrl', Room)
.controller('TestCtrl', Test)
Room.$inject = [...,'$uibModal'];
Test.$inject = [$uibModalInstance];
function Room(..., $uibModal) {
/*jshint validthis: true */
var vm = this;
...
vm.open = function () {
vm.modalInstance = $uibModal.open({
templateUrl: 'modal.html',
controller: 'TestCtrl as vm',
});
};
}
function Test($uibModalInstance){
this.modalText = 'Modal Text'
this.modalCancel = function() {
$uibModalInstance.dismiss();
}
}
})();
真的很简单。 $uibModalInstance.dismiss();
。它就在 documentation
感叹