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