0

$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呼び出しがトリガーされていません。

4

2 に答える 2