Angular ui modal在单独的js文件中带有控制器
Angular ui modal with controller in separate js file
我正在尝试制作一个可以从应用程序中的多个位置实例化的模态。从这里给出的例子来看:Bootstrap的Angular指令模态控制器与实例化模态的控制器在同一个文件中。我想将模态控制器与"应用程序"控制器分离。
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>
控制器:
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';
}]);
modal.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文件中,并以某种方式将控制器(modalCtrl)注入到modalTestCtrl中?
BR
当然可以。首先,您应该使用函数声明。
// modalCtrl.js
// This file has to load before modalTestCtrl controller
function modalCtrl ($scope) {
$scope.hello = 'Works';
};
然后,更改模式TestCtrl,如:
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'
});
}
}]);
通过以上更改,您的代码必须正常工作。
相关文章:
- 有没有任何方法可以将控制器从文件加载到ui路由器$stateProvider中
- 从AngularJS中的另一个文件中的控制器访问服务
- Ionic将firebase注入工厂,同时将控制器和服务保存在不同的文件中
- 将AngularJS控制器拆分为多个文件
- 如何将json文件中的数据提取到对象数组中,并在两个控制器之间共享
- 如何在来自另一个文件的控制器中定义变量
- 如何在打开模型时动态加载控制器文件
- AngularJS - 一个文件中的控制器和服务
- 如何在 Grails 中将值直接从控制器传递到 javascript 文件
- 我可以将外部javascript文件链接到AngularJS控制器吗
- 如何使用springmvc控制器通过ajax sumbit传递文件对象
- 如何让一个变量从一个控制器到一个js文件,再到一个渲染的分部
- Angular JS控制器和Factory在单独的文件中
- 如何将文件夹中包含的控制器动态绑定到angularjs中的视图
- angular js:将一个大型控制器拆分为多个文件
- 将资源文件数据从控制器传输到js文件
- 如何将JavaScript文件路径映射到ASP.Net MVC控制器操作
- Angular html文件可以'找不到JS控制器[Node.JS/Angular]
- 从单个angularjs文件调用所有控制器
- 对添加jquery不显眼的ajax脚本文件控制器动作运行两次