【发布时间】:2017-08-29 17:55:27
【问题描述】:
我正在使用Tippy library 创建一个 HTML 工具提示。我制定了 2 个指令来处理提示工具提示。
.directive('settings', function() {
return {
templateUrl: 'tippy-template.html'
};
})
.directive('tippy', function() {
return function (scope) {
tippy('.tippy', {
position: 'bottom',
animation: 'shift',
arrow: true,
interactive: true,
arrowSize: 'big',
distance: 20,
html: document.getElementById('setting-template'),
appendTo: document.getElementById('settings-controller')
})
};
})
settings 指令包含 HTML 工具提示代码,tippy 指令将放置在 HTML 工具提示代码中以激活它。
tippy 工具与其所在的控制器共享数据,在本例中它共享缓存。
如果只有一个 tippy Fiddler 1 controller 实例,则一切正常。我无法再次使用该指令。我能够重现我遇到的问题Fiddler 2 controllers link。
据我了解,Tippy 只能在有唯一 id 的情况下使用。有没有办法解决这个问题?
tippy-template.html
<div id="setting-template" tippy>
<ul class="collection">
<li class="collection-item">
<div class="col-title"><b>{{title}}</b></div>
<div class="col-title">Cache</div>
<div class="col-item">
<div class="switch">
<label>Off
<input ng-model="cache" type="checkbox"><span class="lever"></span> On
</label>
</div>
</div>
</li>
<li class="collection-item">
<div class="col-title"><b>Cache Result</b></div>
<div class="col-item">{{cache}}</div>
</li>
</ul>
</div>
指令用法(在控制器内)
<div id="settings-controller" settings></div>
【问题讨论】:
-
一个问题需要我们自己来解决,添加tippy-template.html和你的指令用法示例。就目前而言,我唯一能说的是你的指令中不应该有 document.getElementById()。
-
@Walfrat 更新(提琴手也包含它们),需要给 Tippy 一个 ID 才能使用模板,如果没有,它只是在控制器上输出 html。
-
这不是我在这里看到的,你给他一个 HTMLElement,document.getElementById() 不返回 Id,它返回与 id 匹配的 HTML 对象。使用该指令,您可以注入元素对象,因此您可以获得使用该指令的对象的 id。最后,将一个 id 放入多次使用的模板中是行不通的,因为您最终会在 html 上获得多个 id
-
哦,是的,我的错,Old question 使用
document.getElementById()的原因,它没有呈现范围内容。
标签: javascript html angularjs angularjs-directive angularjs-templates