gpt4 book ai didi

javascript - 在单独的 js 文件中带有 Controller 的 Angular ui 模式

转载 作者:数据小太阳 更新时间:2023-10-29 05:10:12 26 4
gpt4 key购买 nike

我正在尝试制作一个可以从应用程序中的多个位置实例化的模式。来自此处给出的示例:Angular directives for Bootstrap模态 Controller 与实例化模态的 Controller 位于同一文件中。我想将模态 Controller 与“应用程序” Controller 分开。

index.html:

<!DOCTYPE html>
<html ng-app="modalTest">

<head>
<link rel="stylesheet" type="text/css" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">
</head>

<body ng-controller="modalTestCtrl">
<button ng-click="openModal()">Modal</button>

<script type="text/javascript" src="http://cdnjs.cloudflare.com/ajax/libs/angular.js/1.2.20/angular.min.js"></script>
<script type="text/javascript" src="http://cdnjs.cloudflare.com/ajax/libs/angular-ui-bootstrap/0.10.0/ui-bootstrap.min.js"></script>
<script type="text/javascript" src="http://cdnjs.cloudflare.com/ajax/libs/angular-ui-bootstrap/0.10.0/ui-bootstrap-tpls.min.js"></script>
<script type="text/javascript" src="modalTest.js"></script>
</body>

</html>

Controller :

var app = angular.module('modalTest', ['ui.bootstrap']);

app.controller('modalTestCtrl', ['$scope', '$modal', function($scope, $modal) {
$scope.openModal = function() {
var modalInstance = $modal.open({
templateUrl: 'modal.html',
controller: 'modalCtrl',
size: 'sm'

});
}
}]);
// I want this in another JavaScript file...
app.controller('modalCtrl', ['$scope', function($scope) {
$scope.hello = 'Works';
}]);

模态.html:

<div ng-controller="modalCtrl">
<div class="modal-header">
<h3 class="modal-title">I'm a modal!</h3>
</div>
<div class="modal-body">
<h1>{{hello}}</h1>
</div>
<div class="modal-footer">
<button class="btn btn-primary" ng-click="ok()">OK</button>
<button class="btn btn-warning" ng-click="cancel()">Cancel</button>
</div>
</div>

有没有办法将 modalCtrl 放入另一个 JavaScript 文件中,并以某种方式将 Controller (modalCtrl) 注入(inject)到 modalTestCtrl 中?

BR

最佳答案

当然可以。首先,您应该使用函数声明。

// modalCtrl.js
// This file has to load before modalTestCtrl controller
function modalCtrl ($scope) {
$scope.hello = 'Works';
};

然后,像这样更改 modalTestCtrl:

app.controller('modalTestCtrl', ['$scope', '$modal', function($scope, $modal) {
$scope.openModal = function() {
var modalInstance = $modal.open({
templateUrl: 'modal.html',
controller: modalCtrl, //This must be a referance, not a string
size: 'sm'

});
}
}]);

通过上述更改,您的代码必须能够正常工作。

关于javascript - 在单独的 js 文件中带有 Controller 的 Angular ui 模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25596809/

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