如何扩展 Angularjs ng-include 指令
How to extend Angularjs ng-include directive?
我正在尝试用这个扩展ng-include
指令:
module.directive('incComp', [function () {
return {
template: "<div ng-include='"'app/component/{{incComp}}/template.html''"></div>"
};
}]);
我像这样使用它:
<div inc-comp="counter"></div>
但是发出的 get 请求用于:
/app/component/%7B%7BincComp%7D%7D/template.html
我不确定如何让它插入 inc-comp 属性的值,而不仅仅是在模板字符串中使用文字值。我从这个 SO 问题(第二个答案)中得到了这样做的想法。
该任务也可以在没有ng-include和没有隔离范围的情况下完成,我认为这是一个很好的解决方案:
兹罗提演示在这里
索引.html
<div ng-app="app" ng-controller="appCtrl">
<div add-template type="lion"></div>
<div add-template type="fox"></div>
</div>
<script data-require="angular.js@1.3.x" src="https://code.angularjs.org/1.3.14/angular.js" data-semver="1.3.14"></script>
<script type="text/javascript">
var app = angular.module("app", []);
app.directive('addTemplate', function() {
return {
templateUrl: function(elem, attr) {
return 'template_' + attr.type + '.html';
}
}
});
</script>
template_fox.html
<div> This is Fox Template </div>
template_lion.html
<div> This is Lion Template </div>
祝您乐于助人!
incComp
在您的模板中被评估为无。您需要将其添加到您的范围中。ng-include 需要一个表达式,而不是一个模板。像这样的东西应该更好用:
module.directive('incComp', [function () {
return {
scope: true,
controller: function($scope, $element, $attrs) {
$scope.tpl = 'app/component/' + $attrs.incComp + '/template.html'
},
template: "<div ng-include='"tpl'"></div>"
};
}]);
您也可以在链接函数而不是控制器中执行此操作。
不过我没有测试它...
编辑:我想你也可以做这样的事情:
module.directive('incComp', [function () {
return {
scope: {
incComp: '@'
},
template: "<div ng-include='"'app/component/' + incComp + '/template.html''"></div>"
};
}]);
相关文章:
- AngularJS ng include dons'不起作用
- AngularJS ng include won'不知什么原因不起作用
- 有没有办法在AngularJS中强制重新加载递归ng-include
- AngularJS:如何使用ng-include将javascript文件加载到部分中
- 阻止“ng include”创建孤立的作用域.AngularJS
- 如何扩展 Angularjs ng-include 指令
- ng-class 在 angularJs 中由 ng-include 包含的文件内不起作用
- 使用ng-include调用控制器时AngularJS路由解析
- Angularjs-ng include没有加载include模板(没有可见的错误)
- angularjs ng-include中html文件的延迟包含
- AngularJS ng include partial在$http拦截器中不可用
- Angularjs ng-include 不包括任何视图
- AngularJs ng-include src =“sample.html ” 不起作用
- AngularJS ng-include 在单击历史记录后退按钮时不会重新加载
- AngularJS ng include:访问被拒绝
- AngularJS ng-include只有一次
- flask + angularjs: ng-include is 404'ing
- AngularJs: ng-include在放置在ng-view标签中时不起作用
- 如何在AngularJS ng-include中获取调用onload的元素
- AngularJS ng-include on ng-click