使用.run进行角度预填充数据然后传入工厂

时间:2014-09-05 15:57:45

标签: javascript angularjs

这里有角度的新手。我正在尝试将数据传递到工厂中以供使用。我试图在角度内使用$ http以某个顺序触发事件。我被指向使用.run来完成第一个人口,将其传递到工厂,然后将其传递给控制器​​。工厂有一个功能,然后允许我“刷新”与控制器共享的数据。

我收到了一些很好的帮助来设置刷新功能,但是我很难在最初填充数据。这是我的尝试:

.run("getDataForLevels", function($http){
    var getIt = $http.get("/assets/images/generated.json")
        .success(function(data){
            return data;
        });
    return getIt;
})
.factory("UserService", function($http, getDataForLevels) {

    dataFactory = getDataForLevels;
    dataFactory.currentData = null;

    dataFactory.update = function () {
        return $http.get("/assets/images/generated.json")
            .success(function(data){
                dataFactory.currentData = data;
                return data;
            });
    };

    return dataFactory;

});

然后我将UserService的依赖项添加到控制器并将数据传递给控制器​​。我似乎在押注错误[ng:areq]。任何/所有帮助将不胜感激。谢谢!

1 个答案:

答案 0 :(得分:0)

你不能这样做:

.run("getDataForLevels", function($http){
    var getIt = $http.get("/assets/images/generated.json")
    .success(function(data){
        return data;

        });
    return getIt;
})

它只接受一个参数,作为一个函数。

你可以这样做:

.run(function($http,$rootScope){
    $http.get("/assets/images/generated.json")
    .success(function(data){
        $rotScope.data=data;

        });
})

.factory("UserService", function($http, $rootScope) {



    dataFactory.update = function () {
        return $http.get("/assets/images/generated.json")

    };

    return dataFactory;

});

在控制器注入依赖项中并执行如下操作:

var dataFactory = $rootScope.data;
    dataFactory.currentData = null;
UserService.update ()
        .success(function(data, status, headers) {
        console.log(data);
      })
      .error(function(data, status, headers, config) {
        console.error('error in loading File list');
      });