【发布时间】:2015-05-08 15:05:17
【问题描述】:
我是 Angular 新手,我对 Angular ajax 调用有疑问。
我在收到指令后触发的服务调用时遇到了困难。我不能让它正常工作。该代码适用于控制器中的硬编码 json-data,但不知道如何将服务/工厂设置为我的远程服务。
这是我使用硬编码 json 的工作示例。 代码解释: 我的视图中有一个项目列表,并且希望在悬停每个项目时显示一个工具箱。我使用 Jquery.qtip.js 这样做。 我使用指令来显示工具箱并从控制器 json 中获取内容。 (在 getcurrentbooklist 函数中,只是想在名称相同的工具箱列表中做一个标记。)
var listControllers = angular.module('listControllers', []);
listControllers.controller("StartCtrl", function ($scope) {
$scope.booklist = [
{ name: 'John', age: 25, gender: 'boy' },
{ name: 'Jessie', age: 30, gender: 'girl' },
{ name: 'Johanna', age: 28, gender: 'girl' },
{ name: 'Joy', age: 15, gender: 'girl' },
{ name: 'Mary', age: 28, gender: 'girl' },
{ name: 'Peter', age: 95, gender: 'boy' },
{ name: 'Sebastian', age: 50, gender: 'boy' },
{ name: 'Erika', age: 27, gender: 'girl' },
{ name: 'Patrick', age: 40, gender: 'boy' },
{ name: 'Samantha', age: 60, gender: 'girl' }
];
$scope.gettooltips = function (bookid) {
return getcurrentbooklist(bookid, $scope.booklist);
}
});
listControllers.directive('qtip', function () {
return {
restrict: 'A',
link: function (scope, element, attrs) {
element.qtip({
content: {
text: scope.gettooltips(attrs.qtip)
},
position: {
my: 'bottom center',
at: 'top center'
},
hide: {
fixed: true,
delay: 300
}
});
}
};
});
var getcurrentbooklist = function (name, arr) {
var rettext = "<ul>";
for (i = 0; i < arr.length; i++) {
if (name== arr[i].name) {
rettext += "<li>" + arr[i].name + " - mark </li>";
} else {
rettext += "<li>" + arr[i].name +"</li>";
}
}
rettext += "</ul>";
return rettext;
};
谢谢
【问题讨论】:
-
问题是指令不会在ajax调用后填充,因为$http在指令之后触发