我$http
在应该从我的服务器获取数据的服务中进行调用。出于某种原因,我无法让我的服务正常工作 - 没有任何反应。我知道服务器代码有效,因为如果我将$http
调用放在控制器内的函数中,那么它会按预期获取服务器数据。这是我到目前为止的代码:
app.service('myService', function($q,$compile,$http) {
this.getData = function() {
var deferred = $q.defer();
var promise = $http.get('myfile.php').success(function (data) {
var response = $compile(data)($scope);
deferred.resolve(response);
});
return deferred.promise;
};
});
另外,我知道使用此服务的代码有效,因为如果我执行以下操作,
app.service('myService', function() {
this.getData = function() {
return 'TEST';
};
});
然后我会在使用此服务的 div 中看到“TEST”一词。我觉得我很接近,但我缺少一些东西。关于我做错了什么的任何想法?
更新:
controller: function($scope, $http, $rootScope, myService){
var scope = $rootScope;
scope.viewMyData = function() {
var element = myService.getData();
$('#myDiv').html(element);
}
}
HTML:
<div ng-click="viewMyData()">Click Here</div>
<div id="myDiv"></div>
如果我剥离代码myService
并简单地返回TEST
(如上),那么我将看到“TEST”出现在id="myDiv"
. 但由于某种原因,$http
呼叫没有被触发。