gpt4 book ai didi

AngularJS $modalInstance - 我可以在一个 Controller 中执行此操作吗?

转载 作者:行者123 更新时间:2023-12-04 18:05:29 26 4
gpt4 key购买 nike

我花了一些时间玩 AngularJS Bootstrap 弹出窗口,并且对于意图它工作得很好,但我想做的是绑定(bind)它,它是同一个 Controller 的依赖脚本,我无法工作不过现在是关闭按钮。如果我创建一个新 Controller ,并注入(inject) $modalInstance 它工作得很好,我可以连接关闭按钮而没有任何问题,但我不想要第二个 Controller ,它似乎过于复杂:我想要我所有的 Controller 逻辑在 formController 中。

为什么我实际上想要两个 Controller ?在我看来,在两个 Controller 之间传递范围似乎有点过头了,项目越大,就越难以管理。我是否试图不必要地过度简化这一点? :)

剧本:

(function(){
var app = angular.module('ngModalDemo', ['ui.bootstrap'])
.controller('formController', function($scope, $modal){
$scope.openModal = function () {
var modalInstance = $modal.open({
templateUrl: 'SomeModal.html',
controller: 'formController'
});
};
$scope.closeModal = function () {
// Code needed here :)
};
})
})();

HTML 正文(出于演示的目的,请原谅脚本中的 HTML):
    <div ng-controller="formController">
<button class="btn btn-default" ng-click="openModal()">Let's do some stuff!</button>

<script type="text/ng-template" id="SomeModal.html">
<div class="modal-header">Do some stuff in this modal y'all.</div>
<div class="modal-footer">
<button class="btn btn-info" ng-click="closeModal()">Close</button>
</div>
</script>
</div>

基于 Kaspars 输入的答案:)
    (function(){
var app = angular.module('ngModalDemo', ['ui.bootstrap'])
.controller('formController', function($scope, $modal, $log){
$scope.openModal = function () {
var modalInstance = $modal.open({
templateUrl: 'SomeModal.html',
controller: [
'$scope', '$modalInstance', function($scope, $modalInstance){
$scope.closeModal = function () {
$modalInstance.close();
};
}
]
});
};
})
})();

最佳答案

我在同样的问题上苦苦挣扎,我想出的最好的办法是使用匿名函数作为模态 Controller 。这样,所有逻辑都在同一个 Controller 中,您不必为每个模态窗口创建单独的 Controller 。

这看起来像这样:

(function(){
var app = angular.module('ngModalDemo', ['ui.bootstrap'])
.controller('formController', function($scope, $modal){
$scope.openModal = function () {
var modalInstance = $modal.open({
templateUrl: 'SomeModal.html',
controller: [
'$scope', '$modalInstance', 'data', function($scope, $modalInstance, data) {
$scope.data = data;
$scope.ok = function() {
$modalInstance.close();
};
$scope.closeModal = function() {
$modalInstance.dismiss();
};
}
]
});
};
})
})();

PS。上面没有测试过代码,只是把你提供的代码和我的一个项目的片段放在一起。

关于AngularJS $modalInstance - 我可以在一个 Controller 中执行此操作吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29461449/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com