工厂退货返回功能,不是功能产品

时间:2015-05-06 22:13:45

标签: javascript angularjs

我在工厂内实施了一项似乎有效的承诺。但是我似乎正在返回功能...而不是功能的产物。如果我控制台日志,我看到在控制台中打印出完整的功能而不是数据。

我是否搞砸了数据返回的方式?

对象{data:function} < - 来自控制台日志

latestScores.factory('importIO', function($q) {

return {

    data: function(){

         var deferred = $q.defer()

         setTimeout(function() {

         var io2 = new importio("xxx", "xxx", "import.io");

         io2.connect(function(connected) {

         if (!connected) {
            console.error("Unable to connect");
            return;
         }

        var data;

        var callback = function(finished, message) {

            if (message.type == "DISCONNECT") {
                console.error("The query was cancelled as the client was disconnected");
                deferred.reject(new Error('No name specified for greeting'))
            }

            if (message.type == "MESSAGE") {
                if (message.data.hasOwnProperty("errorType")) {

                    console.error("Got an error!", message.data);
                } else {
                data = message.data.results;
                deferred.resolve(data)
                }
            }
            if (finished) {
                data = message.data.results;
                deferred.resolve(data)

            }
        };

        io2.query({
            "connectorGuids": [
                "xxx"
            ],
        }, callback);

    });

     }, delay)
    return deferred.promise

    }
}

});

latestScores.controller('ScoresController', function($scope, importIO) {

    $scope.liveScores = importIO.data; 

    console.log($scope.liveScores); /* returns a console log of function not data */

});

感谢您的时间。

1 个答案:

答案 0 :(得分:2)

您正在将功能分配给$scope.liveScores而不是结果。

你可以使用这样的承诺:

importIO.data().then(function(result){
    $scope.liveScores = result;
    console.log($scope.liveScores);
});

这意味着您执行数据功能,然后在“数据”方法完成后,将结果分配给liveScores