是的,到目前为止,我在一个带有控制器的页面上完成了我所有的 AngularJS,我很困惑指令是否可以在没有声明控制器的页面上工作。答:他们肯定会,只要 ng-app 在那里运行。所以我在每个需要工具提示的页面的包装 div 中添加了工具提示,编写了一个名为 tooltip 的指令来确定哪个页面正在调用工具提示,并使用服务来加载数据。
HTML:
<div class="pagewrapper" tooltip data-title="unique-page-title">
JSON:
[{
"extension": "unique-page-title",
"contents": [
{
"head": "Tooltip heading one",
"content": "information on section 1"
},
{
"head": "Tooltip heading two",
"content": "information on section 2"
}
]
}]
JS:
angular.module('myApp.services', []).service('tooltips', function ($http) {
var requestPromise = $http.get('path/to/tooltips.json').then(function (d) {
return d.data;
});
this.getTooltips = function () {
return requestPromise;
};
});
angular.module('myApp.directives', []).directive('tooltip', function (tooltips, $filter) {
return {
restrict: 'A',
link: function (scope, element, attr) {
var elements = $('.forms .tooltip'),
list = [],
title = attr.title;
//use the promisey service getTooltips to load the tooltips JSON
tooltips.getTooltips().then(function (tips) {
//Do some things to identify the correct place to insert the tooltip content, and insert it.
});
}
};
});