如何在不发送HTML代码的情况下共享AngularJS指令
How to share AngularJS directives without the need to send HTML code
我正在创建一个AngularJS模块,其中包含一些将在我的组织内的其他项目中重用的指令。目前,当一些项目需要使用这个泛型模块时,我需要发送两件事:javascript和所有创建指令的AngularJS代码,以及我的指令使用的所有模板视图。
我当前的结构如下:
var commonWidgets = angular.module('commonWidgets', []);
commonWidgets.directive('commonGrid', function () {
return {
restrict: 'A',
scope: {
options: '='
},
templateUrl: '/views/grid.html',
link: function (scope) {
...
}
};
});
在这个例子中,我必须与其他项目共享common-widgets.js和/views/grid.html。
问题:是否有一种方法,我可以只发送javascript代码?
我认为一个可能的解决方案是像下面这样声明我的javascript代码:var commonWidgets = angular.module('commonWidgets', []);
commonWidgets.directive('commonGrid', function () {
return {
restrict: 'A',
scope: {
options: '='
},
template: '<div>A relative big code goes here</div>',
link: function (scope) {
...
}
};
});
问题是,当我在Javascript代码中有模板时,很难维护。另一方面,这个库的使用者不需要担心视图。
是否有一种方法,我可以改变templateUrl模板,而构建一个生产就绪的AngularJS库?
第一个选项
你可以使用$templateCache服务和
commonWidgets.run(function($templateCache) {
$templateCache.put('/views/grid.html', 'This is the content of the template');
});
只要commonWidgets
是模块的名称
第二选项
你可以使用grunt-angular-templates从已有的模板中生成$templateCache。
第一种和第二种可能的结合对你来说是最好的。
ngtemplates任务我的Gruntfile
的一部分,任务ngtemplates with在构建过程
ngtemplates: {
app: {
cwd: 'app',
src: 'views/**/*.html', // all subdirectories
dest: '.tmp/templates.js',
options: {
htmlmin: '<%= htmlmin.dist.options %>',
usemin: 'scripts/modules.js', // append .tmp/tempaltes to scripts/modules.js file
module: appName // global appName from Gruntfile config section
}
}
}
最好的方法是使用Grunt将HTML构建到单个JS文件中。
Grunt有一个插件grunt-angular-templates
,它可以将你所有的HTML模板转换成一个JavaScript文件,并将它们注册到Angular中,这样你就不必更改任何代码。然后,你可以简单地分发你生成的JS而不是你的HTML文件。
相关文章:
- 如何在未直接触发的情况下停止事件
- 在不使用JQuery的情况下隐藏DOM中的选定元素
- 在不使用jquery的情况下查找页面中的所有锚点并附加函数
- 在不打开聊天屏幕的情况下制作Zopim-ding代理
- 在不阻止默认行为的情况下检测IE10中的缩放
- 如何在不传递此信息的情况下查找被调用的元素
- 如何在不刷新页面的情况下更新显示框
- 有没有一种方法可以在控制台关闭的情况下让console.log()在IE中记录消息
- JavaScript-在手机上不工作的情况下,在外部单击时隐藏元素
- 在我的情况下,如何进行http请求
- 如何在没有插件和Wordpress的情况下创建共享社交媒体
- 如何在不污染全局命名空间的情况下共享常用的jquery函数
- GAS:如何允许其他人在不共享代码的情况下使用您的库
- 在不打开弹出窗口的情况下在Facebook上共享内容
- 如何在没有Facebook共享按钮的情况下共享页面
- 如何在没有闭包的情况下对共享状态进行编程
- 如何在不复制数据的情况下在站点中的页面之间共享静态数据
- 如何在不发送HTML代码的情况下共享AngularJS指令
- 如何在没有服务器的情况下将共享的html加载到页面中
- 为什么在这种情况下超时变量是可共享的