AngularJs UI模式,不带$scope和额外的ModalController(解析) 我想在AngularJS中实现UI模式,而不使用$Scope,也不实现ModalControllerresolve。 我没有在控制器中使用$scope。我使用的是vm=this。因此,我不知道在打开模式时给作用域分配什么值。 我也不想使用resolve,因为它需要再创建一个控制器。

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 = ["

请在下面找到我的代码:任何帮助都将不胜感激

HTML

我试过以下几件事:

在HTML中,将ng controller=MyController设置为vm

还尝试在$uibModal.open函数中为scope、controller和controllera设置各种值

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;