Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Angular1.6工厂_Javascript_Angularjs_Json - Fatal编程技术网

Javascript Angular1.6工厂

Javascript Angular1.6工厂,javascript,angularjs,json,Javascript,Angularjs,Json,Hii正在使用以下代码。我正在读一个json文件名为“users.json”。如果我通过$http在controller中读取此文件,则一切正常。但我想使用从文件中读取的数据,一次又一次地在不同的控制器中使用,所以我为此制作了一个工厂。但在工厂中,当我通过$http.get()从json文件读取数据时,作为回报,当我在控制器中调用该服务方法时,它返回对象{$$state:Object} app.factory('AboutFactory',['$http',function ($http) {

Hii正在使用以下代码。我正在读一个json文件名为“users.json”。如果我通过$http在controller中读取此文件,则一切正常。但我想使用从文件中读取的数据,一次又一次地在不同的控制器中使用,所以我为此制作了一个工厂。但在工厂中,当我通过
$http.get()
从json文件读取数据时,作为回报,当我在控制器中调用该服务方法时,它返回
对象{$$state:Object}

app.factory('AboutFactory',['$http',function ($http) {
    return {
        getter: function () {
            return $http({
                method : 'GET',
                url : '/home/penguin/Modeles/users.json',
                cache : true
            })
            .then(function (response) {
                return response.data
            })
        }         
    }
}])

getter函数的结果是一个承诺。所以你应该这样使用它:

AboutFactory.getter().then(function(res)
{
   console.log(res);
});

getter函数的结果是一个承诺。所以你应该这样使用它:

AboutFactory.getter().then(function(res)
{
   console.log(res);
});
这是因为该服务返回一个,如中所述:

$HTTPAPI基于$q公开的延迟/承诺API 服务而对于简单的使用模式,这并不重要 高级用法熟悉这些API非常重要 以及他们提供的保证

你可以把一个承诺想象成你给某人一个绝密的信息,并亲自传递给一个朋友,然后在传递时,用你朋友的信息向你汇报

  • 您将消息(请求对象)提供给此人,以便他们可以尝试传递消息(发送请求)

  • 尝试传递已发生(请求已发送),它可能:

    • a) 已成功交付(成功响应)或
    • b) 您的朋友不在,因此无法投递信函(未成功回复)
  • 然后,您可以根据得到的响应采取行动

    • a) 消息已发送(请求成功),您收到了一封回信(对回复进行处理)或
    • b) 无法传递消息(请求未成功),因此您可以稍后再试,或者在您没有请求的信息时执行其他操作
  • 以下是将服务与服务一起使用的示例:

    //app.js
    (功能(){
    "严格使用",;
    角度模块('app',[]);
    })();
    //main.controller.js
    (功能(){
    "严格使用",;
    角度。模块('app')。控制器('MainController',MainController);
    主控制器.$inject=['AboutFactory'];
    功能主控制器(关于工厂){
    var vm=这个;
    AboutFactory.getter().then(函数(数据){
    //对你的数据做点什么
    vm.data=数据;
    },函数(错误){
    //向用户提供有关错误的反馈
    });
    }
    })();
    //关于.service.js
    (功能(){
    "严格使用",;
    角度.module('app').factory('AboutFactory','AboutFactory');
    关于工厂。$inject=['$http','$q']
    函数AboutFactory($http,$q){
    var服务={
    吸气剂:吸气剂
    };
    回程服务;
    函数getter(){
    //执行一些异步操作,在适当的时候解决或拒绝承诺。
    返回$q(函数(解析、拒绝){
    $http({
    方法:“GET”,
    网址:'https://httpbin.org/get',
    缓存:真
    }).然后(功能(响应){
    //成功状态代码
    //解析响应中的数据
    返回解析(response.data);
    },函数(错误){
    //错误
    //以某种方式处理错误
    //以错误拒绝
    返回拒绝(错误);
    });
    });
    }
    }
    })();
    
    
    {{MainCtrl.data | json}
    
    这是因为服务返回一个,如中所述:

    $HTTPAPI基于$q公开的延迟/承诺API 服务而对于简单的使用模式,这并不重要 高级用法熟悉这些API非常重要 以及他们提供的保证

    你可以把一个承诺想象成你给某人一个绝密的信息,并亲自传递给一个朋友,然后在传递时,用你朋友的信息向你汇报

  • 您将消息(请求对象)提供给此人,以便他们可以尝试传递消息(发送请求)

  • 尝试传递已发生(请求已发送),它可能:

    • a) 已成功交付(成功响应)或
    • b) 您的朋友不在,因此无法投递信函(未成功回复)
  • 然后,您可以根据得到的响应采取行动

    • a) 消息已发送(请求成功),您收到了一封回信(对回复进行处理)或
    • b) 无法传递消息(请求未成功),因此您可以稍后再试,或者在您没有请求的信息时执行其他操作
  • 以下是将服务与服务一起使用的示例:

    //app.js
    (功能(){
    "严格使用",;
    角度模块('app',[]);
    })();
    //main.controller.js
    (功能(){
    "严格使用",;
    角度。模块('app')。控制器('MainController',MainController);
    主控制器.$inject=['AboutFactory'];
    功能主控制器(关于工厂){
    var vm=这个;
    AboutFactory.getter().then(函数(数据){
    //对你的数据做点什么
    vm.data=数据;
    },函数(错误){
    //向用户提供有关错误的反馈
    });
    }
    })();
    //关于.service.js
    (功能(){
    "严格使用",;
    角度.module('app').factory('AboutFactory','AboutFactory');
    关于工厂。$inject=['$http','$q']
    函数AboutFactory($http,$q){
    var服务={
    吸气剂:吸气剂
    };
    回程服务;
    函数getter(){
    //执行一些异步操作,在适当的时候解决或拒绝承诺。
    返回$q(函数(解析、拒绝){
    $http({
    方法:“GET”,
    网址:'https://httpbin.org/get',
    缓存:真
    }).然后(功能(响应){
    //成功状态代码
    
    app.controller('myCtrl1', ['setGetData',function(setGetData) {
    
      // To set the data from the one controller
      var data = 'Hello World !!';  
      setGetData.setData(data);
    
    }]);
    
    app.controller('myCtrl2', ['setGetData',function(setGetData) {
    
      // To get the data from the another controller  
      var res = setGetData.getData();
      console.log(res); // Hello World !!
    
    }]);