【发布时间】:2014-03-27 12:04:56
【问题描述】:
我在页面上有一个由服务器渲染的元素。我们称之为播放列表。这将是一个指令。<div playlist></div>
播放列表在 Angular 编译时间之前包含许多曲目。<div class="Track" data-track-name="Pompeii" data-*="etc">...</div>
加载页面后,我将包含 AngularJS 并解析 playlist 和指令。
当我初始化 playlist 指令时,我想在编译它的模板并使用收集的数据在 @987654323 中绘制 track 指令之前循环遍历它的内容@ 属于 playlist 指令的指令。
问题:
在模板替换指令标记中的任何内容之前,是否有解析内容的本机功能?一旦我进入指令控制器,内容就已经被替换了。
我的问题有更好的解决方案吗?不幸的是,我不得不使用页面上已经呈现的内容作为数据源来解决这个项目的一大堆需求
我能否在来自服务器的内容中使用 track 指令来避免 DOM 操作?
补充说明
编译前:
<div playlist>
<div class="Track" data-track-name="Pompeii">Pompeii</div>
<div class="Track" data-track-name="Weight of living">Weight of living</div>
</div>
编译后:
<div playlist>
<!-- from playlist template -->
<div class="Playlist">
<div class="Playlist-controls">....</div>
<div class="Playlist-tracks">
<div track ng-repeat="track in tracks">
<!-- from track template -->
<div class="Track">...</div>
</div>
</div>
</div>
</div>
【问题讨论】:
-
我想你可能看错了。所有数据操作都应在控制器中完成,指令应对更改做出反应。你有没有机会把一个 jsFiddle 放在一起? Angular 的强大之处在于您不需要解析 DOM。否则,会有带有 pre-link 和 post-link 的 Link 来操作 DOM 和范围。
-
实际上,您可以发布您的播放列表数据结构/模型吗?这可能有助于我理解你想要什么。
-
播放列表有一些控件,例如 playAll 或 queueAll,而曲目则有 play 或队列。除此之外,它们没有太多其他的数据结构。
标签: javascript angularjs angularjs-directive