gpt4 book ai didi

javascript - 使angular手动进入编译阶段

转载 作者:行者123 更新时间:2023-11-29 19:10:33 25 4
gpt4 key购买 nike

我正在使用 ocLazyLoad 在 Angular 中按需加载我的模块。这些模块完全不同,我们应该使用服务器检查我们应该加载哪个模块。在使用 ocLazyLoad 之前,我在主视图中加载了这些独立模块的所有串联 js 文件。所以我们正在加载所有这些。

现在很明显我正在按需加载这些文件,这意味着它应该从服务器读取数据并查看应该加载哪些模块并加载一个兆字节文件并且最重要的加载它之前angular 开始编译 View 。

我正在使用 ocLazyLoad 的 promise 来 $compile View (主体),但由于它被完成了两次甚至更多次,所以有时我的指令不起作用。

所以我想我有两个选择:

  1. 在模块被 ocLazyLoad 注入(inject)和加载后,让 angular 手动编译 View (我搜索了很多,但找不到方法!!)!

  2. 从服务器读取所需模块的列表,并在应用程序的可能运行阶段甚至在 angular.bootstrap 之前使用 LazyLoad。 (我已经这样做了,但是由于 $http 请求是异步完成的,它有时会工作,并且会在 Angular 编译之前加载,有时则不会)

如果你能帮助我,我将不胜感激。

spa.run(['$rootScope', '$location', '$route', '$localStore', '$templateCache', 'Analytics', 'preflightValue', '$ocLazyLoad', '$http',
'$compile', function($rootScope, $location, $route, $localStore, $templateCache, Analytics, preflightValue, $ocLazyLoad, $http, $compile ) {
$rootScope.$on('cfpLoadingBar:completed', function(event, args) {
angular.element($('body')).addClass('cfp-done');
});

$http({
method: 'POST',
url: url,
data: {
route: "/dashboard"
},
headers: {
// My Headers
}
}).success(function (data, status, header, config) {
var currentModules = $ocLazyLoad.getModules();
for (var i = 0; i < data.data.cloudwares.length; i++) {
var moduleName = data.data.cloudwares[i];
if (currentModules.indexOf(moduleName) === -1 && moduleName !== 'bot-manager') {
preflightValue.addModule(moduleName);
}
}
$ocLazyLoad.load(preflightValue.modulesList()).then(function () {
preflightValue.emptyList();
});
});
}]);

//更新

请注意我们没有使用 ui-router 或 ngRouter。每次使用 $resource,我们都从服务器获取路由状态。

最佳答案

在你的配置文件中尝试使用 lazyload 事件声明路由

app
.config(function ($stateProvider, $urlRouterProvider,ParseProvider){

.state ('home', {
url: '/home',
// templateUrl: 'views/home.html',
templateUrl: 'views/home.html',
resolve: {
loadPlugin: function($ocLazyLoad) {
return $ocLazyLoad.load ([
{
name: 'css',
insertBefore: '#app-level',
files: [
'vendors/bower_components/fullcalendar/dist/fullcalendar.min.css',
],

},
{
name: 'vendors',
insertBefore: '#app-level-js',
files: [
'vendors/sparklines/jquery.sparkline.min.js',
'vendors/bower_components/jquery.easy-pie-chart/dist/jquery.easypiechart.min.js',
'vendors/bower_components/simpleWeather/jquery.simpleWeather.min.js'
]
}
])
}
}
})
})

从这里您可以将任何脚本加载到您的 View 中。

关于javascript - 使angular手动进入编译阶段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39190411/

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