我正在使用angularjs,并且希望能够在需要时加载指令,而不是在页面开始时加载所有指令。我正在尝试为最常用的插件创建指令。
这样,一个direct可以yepnope
在最终编译html之前用于加载所有需要的指令。
如果该指令与其他指令一起在页面开始加载,则一切正常。但是,如果稍后加载“子”指令(在“父”中),则该指令无效。以下是“
parent”指令的compile字段中pre字段的代码。
...
var pre = function (scope, element, attrs) {
element.html('Please wait. Loading...');
ang.loadDirectives('caiDatePicker', function () {
console.log('loaded');
scope.data.raw = scope.rawData;
var html = createObjUi(scope, scope.data, scope.defn);
element.html(html); //data
$compile(element.contents())(scope.$new());
scope.$apply();
});
};
return { restrict:'A', compile: {pre:pre,post:function(){...}};
ang.loadDirectives
使用yepnope加载指令。’child’指令的部分代码如下:
angular.module('mycomponents') //PS: I'm assuming this will fetch the already created module in the 'parent' directive
.directive('caiDatePicker', function ($parse) {
return {
scope: {},
restrict: 'A',
link: function (scope, element, attrs) {
scope.$watch('this.$parent.editing', function (v) {
scope.editing = v;
});
yepnope({
test: $().datePicker,
nope: [
'/content/plugins/datepicker/datepicker.js', //todo: use the loader
'/content/plugins/datepicker/datepicker.css'
],
complete: function () {
if (scope.model && scope.model.value) {
var date = scope.model.value;
element.val(date.getDate() + '/' + (date.getMonth() + 1) + '/' + date.getFullYear());
}
element.datepicker({ weekStart: 1, format: 'dd/mm/yyyy' })
.on('changeDate', function (ev) {
scope.model.value = ev.date;
scope.$apply();
});
}
});
attrs.$observe('path', function (v) {
var fn = $parse(v);
var model = fn(scope.$parent);
scope.model = model;
});
}
}
});
首先,我在做什么?
如果是这样,我在做什么错?
搜索了这么长时间,但没有得到任何答案,我得到了以下结果
问题在于,yepnope并没有按照我的要求触发全部功能。最后,我在yepnope之上构建了一个小的包装程序,该包装程序似乎可以确保触发完整功能。
最终代码如下所示:
var app3 = new Cai.AngApp('app3');
app3.loadControllers('app1.controller3', function () {
app3.loadDirectives('jsonEditor', 'datePicker', function () {
app3.bootstrap($('#d3'));
});
});
问题内容: 感谢Dan Wahlin的精彩文章,我设法实现了Angular的控制器和服务的延迟加载。但是,似乎没有一种干净的方法来懒惰加载独立的模块。 为了更好地解释我的问题,假设我有一个没有RequireJS的应用,其结构如下: 这是在Plunker中带有RequireJS的示例应用程序:http ://plnkr.co/aiarzVpMJchYPjFRrkwn 问题的核心是Angular不允许
本文向大家介绍Webpack 实现 AngularJS 的延迟加载,包括了Webpack 实现 AngularJS 的延迟加载的使用技巧和注意事项,需要的朋友参考一下 随着你的单页应用扩大,其下载时间也越来越长。这对提高用户体验不会有好处(提示:但用户体验正是我们开发单页应用的原因)。更多的代码意味着更大的文件,直到代码压缩已经不能满足你的需求,你唯一能为你的用户做的就是不要再让他一次性下载整个应
本文向大家介绍AngularJS中的Directive实现延迟加载,包括了AngularJS中的Directive实现延迟加载的使用技巧和注意事项,需要的朋友参考一下 所谓的延迟加载通常是:直到用户交互时才加载。如何实现延迟加载呢? 需要搞清楚三个方面: 1、html元素的哪个属性需要延迟加载? 2、需要对数据源的哪个字段进行延迟加载? 3、通过什么事件来触发延迟加载? 自定义的Directive
描述 (Description) 延迟加载可应用于图像,背景图像和淡入效果,如下所述 - 对于图像 要在图像上使用延迟加载,请按照给定的步骤进行操作 - 使用data-src属性而不是src属性来指定图像源。 将类lazy添加到图像。 <div class = "page-content"> ... <img data-src = "image_path.jpg" class = "l
问题内容: 是否可以从Angular控制器加载普通的旧JS或AMD模块?我以前为此使用RequireJS。 我以前在相当大的项目上使用过AngularJS和RequireJS。我正在基于MEAN Stack种子的新项目中工作,并且不使用requireJS。 我不太清楚,但是Angular有一个用于加载模块的系统-我可以从我的angular控制器中加载特定的javascript吗? 有没有办法修改我
问题内容: 我在JPA实体中的延迟加载属性有问题。我读过许多类似的问题,但它们与spring或hibernate有关,并且他们的后代不适用或没有帮助。 该应用程序是在Wildfly应用程序服务器上运行的JEE和JPA2.1。有两个实体,DAO会话bean和servlet将它们放在一起: 当我运行此代码时,它失败并显示: 我对WebLogic / JPA1使用了非常相似的模式,并且运行平稳。任何的想