这个问题与 AngularJs 无关。碰巧 jQuery Mobile 不知道每一个 DOM 变化,你需要给它一个提示。要让 jQuery Mobile 了解更改,您需要create
在元素上触发一个事件。
根据文档(查看“增强新标记”):
但是,如果您在客户端生成新的标记或通过 Ajax 加载内容并将其注入页面,则可以触发 create 事件来处理新标记中包含的所有插件的自动初始化。这可以在任何元素(甚至是页面 div 本身)上触发,从而为您节省手动初始化每个插件(listview 按钮、选择等)的任务。
因此,您所要做的就是create
在包含内容后立即触发事件。
我建议您创建一个指令,只需为您触发模板上的事件。就像是:
app.directive('jqueryMobileTpl', function() {
return {
link: function(scope, elm, attr) {
elm.trigger('create');
}
};
});
然后,您只需将此指令添加到模板的根元素:
<div jquery-mobile-tpl>
<ul data-role="listview" data-inset="true" data-theme="c">
<li><a href="#/detailsuser/a">A</a></li>
<li><a href="#/detailsuser/b">B</a></li>
<li><a href="#/detailsuser/c">C</a></li>
<li><a href="#/detailsuser/d">D</a></li>
</ul>
</div>
您可以将此指令设为低优先级,因此如果您使用可能更改模板的其他指令,该指令将等待所有更改,然后再告诉 jQuery Mobile 呈现。工作样本在这里。