1
要顯示一些用戶信息我正在使用捕獲單擊事件的指令來顯示qTip工具提示。由於我已經在使用angular,爲了呈現HTML,我使用$compile來呈現HTML。qtip角度動態模板
.directive('myDirective', function ($compile, $timeout) {
return {
restrict: 'AE',
link: function (scope, element, attrs) {
// Open qTip popup
element.qtip({
content: {
ajax: {
url: '/myurl',
type: 'GET',
dataType: 'json',
success: function (data, status) {
// Contact full name
scope.FullName = data.contact.Forename + ' ' + data.contact.Surname;
var myelement = angular.element('<p>[[ FullName ]]</p>');
var compiled = $compile(myelement)(scope);
this.set('content.text', compiled)
}
}
},
show: 'click',
style: {
classes: 'qtip-bootstrap'
},
hide: {
event: 'unfocus'
}
});
}
};
});
問題是HTML只渲染了一些時間,而在其他情況下我可以看到角標籤來臨。看起來,編譯器的輸出沒有在時間顯示。爲了解決這個問題,我找到了一個使用超時的解決方案,如下面代碼所示。
...
success: function (data, status) {
// Contact full name
scope.FullName = data.contact.Forename + ' ' + data.contact.Surname;
var myelement = angular.element('<p>[[ FullName ]]</p>');
var compiled = $compile(myelement)(scope);
$timeout(this.set('content.text', compiled), 100); // delay 100 ms
}
...
我的問題是,我不覺得這是解決效率非常高,我想知道是否有這種方法更好的選擇。任何幫助,將不勝感激。
是的,這爲我工作,爲解釋許多感謝。實際上我花了一些時間試圖弄清爲什麼$ compile不起作用,現在它是有道理的。 –