Fiddler link无法将指令适用于两个不同的控制器在AngularJS
我使用Tippy library创建HTML工具提示。我做了2条指令来处理tippy工具提示。
.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。有没有办法解决这个问题?
毛尖,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
@Walfrat更新(提琴手同样包含他们),Tippy需要给予一个ID来使用模板,如果不是,它只是输出控制器上的html。 – Shank
这不是我在这里看到的,你给他一个HTMLElement,document.getElementById()不返回一个Id,它返回匹配id的HTML对象。使用该指令,您可以注入元素对象,以便您可以获取使用该指令的对象的ID。最后,在一个模板使用多个时间的ID只是不能工作,因为你将结束与多个id在html – Walfrat