我有一个html文件a.html,如下:
<p> a.html </p>
我想利用angularjs在a.html嵌入另外一个b.html,如下:
<p> b.html </p>
希望的结果如下:
<p> a.html <p> b.html </p> </p>
请问如何实现?
认证高级PHP讲师
ng-include 简单, 但是,要实现复杂结构比较困难ng-transcode 灵活,容易实现复杂的HTML结构,但是要单独写directive (指令)
ng-include
ng-transcode
directive
angular.module('transclude', []) .directive('pane', function(){ return { restrict: 'E', transclude: true, scope: { title:'@' }, template: '<p style="border: 1px solid black;">' + '<p style="background-color: gray">{{title}}</p>' + '<p ng-transclude></p>' + '</p>' }; });
代码'<p ng-transclude></p>'相当于一个插入点, 类似Web组件规范中的插入点概念.
'<p ng-transclude></p>'
当你在模版中的HTML元素上使用 <pane> 这个指令的时候, <pane>中的内容可以被插入到ng-transcode定义的位置
<pane>
例如:
<pane title="{{title}}">{{text}}</pane>
另外,如果你不想在指令中拼接模版字符串, 你可以使用templateUrl替代template
templateUrl
template
细节请参考: http://angular.duapp.com/api/ng.directive:ngTransclude
<p> a.html <bhtml></bhtml> </p>
angular .module('app') .directive('bhtml',function(){ return { templateUrl:'/b.html', restrict:'E', replace:true } })
这个差不多可以做到lz想要的效果了。但是比较麻烦一点,简单点的办法会多一个标签:
<p> a.html <p ng-include="/b.html"></p> </p>
结果:
<p> a.html <p ng-include="/b.html"> <p> b.html </p> </p> </p>
ng-include..
set transclued: true in your directive, and put transclude in your directive template where you want to embed another html template
transclued: true
transclude
a.html
<p> hello a <dv ng-include="b.html"></p> </p>
b.html
<p> hello b </p>
ui-router
ng-include
简单, 但是,要实现复杂结构比较困难ng-transcode
灵活,容易实现复杂的HTML结构,但是要单独写directive
(指令)代码
'<p ng-transclude></p>'
相当于一个插入点, 类似Web组件规范中的插入点概念.当你在模版中的HTML元素上使用
<pane>
这个指令的时候,<pane>
中的内容可以被插入到ng-transcode
定义的位置例如:
另外,如果你不想在指令中拼接模版字符串, 你可以使用
templateUrl
替代template
细节请参考: http://angular.duapp.com/api/ng.directive:ngTransclude
这个差不多可以做到lz想要的效果了。但是比较麻烦一点,简单点的办法会多一个标签:
结果:
ng-include..
set
transclued: true
in your directive, and puttransclude
in your directive template where you want to embed another html templatea.html
b.html
ui-router