AngularJs UI模式,不带$scope和额外的ModalController(解析) 我想在AngularJS中实现UI模式,而不使用$Scope,也不实现ModalControllerresolve。 我没有在控制器中使用$scope。我使用的是vm=this。因此,我不知道在打开模式时给作用域分配什么值。 我也不想使用resolve,因为它需要再创建一个控制器。
请在下面找到我的代码:任何帮助都将不胜感激 HTML 我试过以下几件事: 在HTML中,将ng controller=MyController设置为vm 还尝试在$uibModal.open函数中为scope、controller和controllera设置各种值AngularJs UI模式,不带$scope和额外的ModalController(解析) 我想在AngularJS中实现UI模式,而不使用$Scope,也不实现ModalControllerresolve。 我没有在控制器中使用$scope。我使用的是vm=this。因此,我不知道在打开模式时给作用域分配什么值。 我也不想使用resolve,因为它需要再创建一个控制器。,angularjs,angular-ui-bootstrap,Angularjs,Angular Ui Bootstrap,请在下面找到我的代码:任何帮助都将不胜感激 HTML 我试过以下几件事: 在HTML中,将ng controller=MyController设置为vm 还尝试在$uibModal.open函数中为scope、controller和controllera设置各种值 angular .module("app", ["ui.bootstrap"]) .controller("MyController", MyController) MyController.$inject = ["
angular
.module("app", ["ui.bootstrap"])
.controller("MyController", MyController)
MyController.$inject = ["$uibModal"];
function MyController($uibModal) {
var vm = this;
vm.open = open;
vm.close = close;
function open() {
vm.modalInstance = $uibModal.open({
templateUrl: 'modaltemplate.html',
scope: //what should I assign here, I dont want to use $scope. Or in other words, I want to assign 'vm' here.
});
}
function close() {
//This function is not getting called as it does not understand the vm.
}
}
但似乎什么都不起作用。任何人都可以帮我解决问题。如果关闭函数有问题,可以为关闭模式实例设置$DISCLESH,也可以在$DISCLESH函数中传递参数以供进一步使用,请尝试以下操作:
<script type="text/ng-template" id="modaltemplate.html">
<div class="modal-header">
<h3>Modal Header</h3>
</div>
<div class="modal-body">
<p>Modal Body</p>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" ng-click="$dismiss('cancel')" data-dismiss="modal">Close
</button>
</div>
</script>
您可以在主控制器中创建新作用域
var modalScope = $scope.$new();
在新范围或整个vm上分配所需内容:
modalScope.vm = vm;
然后将其指定为模态范围:
vm.modalInstance = $uibModal.open({
templateUrl: 'modaltemplate.html',
scope: modalScope
});
只要确保在关闭/销毁模式时将其清除即可
modalScope.vm = null;
您已经删除了所有用于避免使用$scope的选项。所有备选方案都要求您创建自己的模态控制器。您的意思是说,使用这种编码结构,必须创建模态控制器?这是没有办法的。是吗?是的,我就是这个意思。谢谢你的帮助谢谢@Hasan。这正是我想要的
modalScope.vm = null;