我想做的是推迟为指令加载角度js模板,直到我真正需要它为止。我什至根本不需要它。有没有一种方法可以只在需要时才加载指令的模板。服务会成为这样做的方式吗?我的应用程序已经加载了很多指令模板,除非我需要,否则我希望避免加载太多的东西。当前的确切问题是为登录表单加载模板。如果用户单击按钮,但他/她未登录,则我要slideOpen(使用jQuery)登录表单。
在绝大多数情况下,动态加载静态指令模板没有任何价值。它们是如此之小,以至于没有意义。但是,有可能。但是,大多数情况下,此策略用于动态模板。
它需要$http
获取模板并将$compile
其连接到AngularJS。
app.directive('testDirective', function($http,$compile) {
return {
scope: { show: '&' },
link: function( scope, element, attrs ) {
var tpl,
url = 'testDirective.tpl.html';
scope.$watch( 'show()', function (show) {
if ( show ) {
showTheDirective();
}
});
function showTheDirective () {
if ( !tpl ) {
$http.get( url ).then( function ( response ) {
tpl = $compile( response.data )( scope );
element.append(tpl);
});
}
}
}
};
});
这是一个表明它有效的Plunker。
我试图创建一个等待加载页面的方法,但我出现了一个错误。可能我没有正确使用这个方法。 错误是:
问题内容: 在以下情况下如何使用包含。目的是在html(部分)文件中使用标记,而不是在模板中(在指令内)定义标记。 我在这里找到了一个很棒的树指令。( 来源)原文: http //jsfiddle.net/n8dPm/ 我没有在指令中定义模板,而是尝试使用包含在内的内容。我还将Angular更新为1.2.0.rc2。更新时间:http://jsfiddle.net/aZx7B/2/ 低于错误 Ty
问题内容: 我正在尝试根据范围值使用不同的模板进行指令。 这是我到目前为止所做的,我不知道为什么它不起作用http://jsbin.com/mibeyotu/1/edit HTML元素: 指示: 问题答案: 1)您正在将内容作为属性传递到html中。试试这个: 代替: 2)指令的数据部分正在被编译,因此您应该使用其他东西。代替数据类型,例如datan-type。 链接在这里: http://jsb
问题内容: 我正在尝试构建一个指令,该 指令 负责在其声明的元素上 添加更多指令 。例如,我要建立一个指令,需要增加的照顾,和。 如果我尝试添加这些属性然后使用,则显然会生成一个无限循环,因此我正在检查是否已添加所需的属性: 当然,如果我没有该元素,则将设置属性,但不会引导该指令。 这种方法正确还是我做错了?有没有更好的方法来实现相同的行为? UDPATE :鉴于这是实现此目标的唯一方法,是否有一
我从这个问题中编辑了一个柱塞
问题内容: 这是我的AngularJs指令。它原本希望在模板中显示div,但是在运行代码时却什么也没有显示。 这是HTML 这是AngularJS指令 这是演示 问题答案: 声明指令时,您使用了名称,但这是错误的。您应该使用,因为它将被转换为元素。 指令名称中的任何大写字母都将转换为连字符,因为元素中未使用大写字母。例如将翻译为。 正如其他人提到的,AngularJS使用以下标准化规则进行标准化: