在 angular js 模式弹出窗口或局部视图中加载外部 js 文件
Load the external js files in angular js modal popup or partial view
我正在开发 angularJS 应用程序并且也在使用 asp.net mvc。
我想从 angularJS 打开一个模态弹出窗口,然后在该弹出窗口中呈现 mvc 的 "View"。
我面临的问题是弹出窗口正在打开,但 js 文件未加载到模态弹出窗口中。请帮助我解决在模式弹出窗口中加载 js 文件的问题。
代码
// main angular js
angular.module('PopUpModule', ['ngResource','ngRoute','ui.bootstrap', 'uigridApp'])
.controller("ModalDemoCtrl", function ($scope, $uibModal, $log, $window) {
$scope.open = function (size) {
var modalInstance = $uibModal.open({
templateUrl: 'UiGridDemo.html',
controller: 'uigridCtrl',
size: 'lg',
backdrop:'static',
windowClass: 'app-modal-window',
resolve: {
'$uibModalInstance': function () {
return function () { return modalInstance; }
}
}
});
//模态弹出(mvc .cshtml 文件的视图)
//script
<script src="Script/Script2.js"></script>
<body>
//html code goes here
</body>
问题是我想加载具有 "jquery code" 的 js 脚本 (Script2.js) 应该加载到模态弹出窗口中,即 mvc 模态弹出窗口的视图 (.cshtml) 通过 angular.but 它没有加载(Script2.js)。我检查了 chrome dev.tools。如何加载它帮我解决这个
我认为uigridCtrl没有在index.html中加载检查js文件是否在index.html中加载,并且在open方法中无需提及控制器属性。它将重新初始化控制器。
编辑 - 如果 uigridCtrl 与父级 html 的控制器相同,则无需在弹出窗口 html 中提及。它将与父 html.
共享相同的范围
如果我在打开模态的父文件中加载 js 文件,我得到了答案 popup.This 文件将可用于此模态弹出窗口,
如果你不想添加文件或修改父文件中的代码,我提供的解决方案可以供你将来使用controller/directive。您还必须添加一些额外的参数。它工作完美,我不必对父级进行任何修改。我正在提供实时工作应用程序的代码。
$ocLazyLoad.load({
name: '', // Module Name - Optional
files: [
'viewRequestController.js',
'request-tpl.js'
]
})
.then(function() {
var modalInstance = $modal.open({
templateUrl: 'viewRequest.html',
controller: 'popupCtrl',
controllerAs:'ctrl',
backdrop: 'static',
keyboard: false,
resolve: {
initVars: function(){
return initVars;
}
}
});
modalInstance.result.then(
function(response) { },
function(response) {
// Executes code when your modal closes.
}
);
});
添加 $ocLozyLoad 和 $modal 参数。希望对你有用。
我正在开发 angularJS 应用程序并且也在使用 asp.net mvc。 我想从 angularJS 打开一个模态弹出窗口,然后在该弹出窗口中呈现 mvc 的 "View"。
我面临的问题是弹出窗口正在打开,但 js 文件未加载到模态弹出窗口中。请帮助我解决在模式弹出窗口中加载 js 文件的问题。
代码
// main angular js
angular.module('PopUpModule', ['ngResource','ngRoute','ui.bootstrap', 'uigridApp'])
.controller("ModalDemoCtrl", function ($scope, $uibModal, $log, $window) {
$scope.open = function (size) {
var modalInstance = $uibModal.open({
templateUrl: 'UiGridDemo.html',
controller: 'uigridCtrl',
size: 'lg',
backdrop:'static',
windowClass: 'app-modal-window',
resolve: {
'$uibModalInstance': function () {
return function () { return modalInstance; }
}
}
});
//模态弹出(mvc .cshtml 文件的视图)
//script
<script src="Script/Script2.js"></script>
<body>
//html code goes here
</body>
问题是我想加载具有 "jquery code" 的 js 脚本 (Script2.js) 应该加载到模态弹出窗口中,即 mvc 模态弹出窗口的视图 (.cshtml) 通过 angular.but 它没有加载(Script2.js)。我检查了 chrome dev.tools。如何加载它帮我解决这个
我认为uigridCtrl没有在index.html中加载检查js文件是否在index.html中加载,并且在open方法中无需提及控制器属性。它将重新初始化控制器。
编辑 - 如果 uigridCtrl 与父级 html 的控制器相同,则无需在弹出窗口 html 中提及。它将与父 html.
共享相同的范围如果我在打开模态的父文件中加载 js 文件,我得到了答案 popup.This 文件将可用于此模态弹出窗口,
如果你不想添加文件或修改父文件中的代码,我提供的解决方案可以供你将来使用controller/directive。您还必须添加一些额外的参数。它工作完美,我不必对父级进行任何修改。我正在提供实时工作应用程序的代码。
$ocLazyLoad.load({
name: '', // Module Name - Optional
files: [
'viewRequestController.js',
'request-tpl.js'
]
})
.then(function() {
var modalInstance = $modal.open({
templateUrl: 'viewRequest.html',
controller: 'popupCtrl',
controllerAs:'ctrl',
backdrop: 'static',
keyboard: false,
resolve: {
initVars: function(){
return initVars;
}
}
});
modalInstance.result.then(
function(response) { },
function(response) {
// Executes code when your modal closes.
}
);
});
添加 $ocLozyLoad 和 $modal 参数。希望对你有用。