Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/377.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

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 从AngularJS服务提取数据_Javascript_Angularjs_Angular Services - Fatal编程技术网

Javascript 从AngularJS服务提取数据

Javascript 从AngularJS服务提取数据,javascript,angularjs,angular-services,Javascript,Angularjs,Angular Services,嗨,我在AngularJS的定制服务中遇到了麻烦,我准备了以下代码片段 对于HTML: {{x.Name} 对于AngularJS服务 var app = angular.module('myApp', []); app.service('myfuncA', function($http){ $http.get('lib/data.txt').success(function(datax){ this.dataM = datax; }).error

嗨,我在AngularJS的定制服务中遇到了麻烦,我准备了以下代码片段

对于HTML:


  • {{x.Name}
对于AngularJS服务

var app = angular.module('myApp', []);
app.service('myfuncA', function($http){

    $http.get('lib/data.txt').success(function(datax){


        this.dataM = datax;

    }).error(function(){

var den =   console.log("No Data");
this.case = den;
    });


});
控制器

app.controller('ctrlC', function($scope, myfuncA){

    $scope.cors = myfuncA.datax;


});

数据没有被提取,也没有错误。

$http.get方法返回HttpPromise($http#get)。 下面是用法示例:$http

尝试使用:

$http.get('lib/data.txt').then(function(datax){
    this.dataM = datax;
}, function(){
    var den = console.log("No Data");
    this.case = den;
});

沿着这条线的东西。没有测试,但会给你一个想法。另外,您应该使用$log服务,也不知道为什么要将其设置为变量。数据是如何存储在txt文件中的?我想是JSON。但希望这能让你走上正轨

var app = angular.module('myApp', []);
app.service('myfuncA', function($http){
    return $http.get('lib/data.txt').then(function(datax){
       return datax;
    });
})
控制器:

app.controller('ctrlC', function($scope,$log myfuncA){
    myfuncA.then(function(datax){
           $scope.cors = datax;
           },function() {$log.log("No Data");};
    });
});

另一方面,对于$http调用,我宁愿使用一个工厂并将该工厂注入控制器以设置$scope.cors。大概是这样的:

app.factory('myfuncA', function($http){
    return {
         getData: function() {

             return $http.get('lib/data.txt');
          };
    }
});
在控制器中,我将消耗工厂:

app.controller('ctrlC', function($scope, myfuncA){
    myfuncA.getData().then(function(response) {
         $scope.cors = response.data;
    });
});
  • 服务必须返回一些东西
  • datax
    是一个内部变量,不可用于服务外部的上下文

    尝试返回
    $http的承诺。获取
    或更好的承诺结果

    app.service('myfuncA', function($http){
      var service = {
           run: run
      };
    
      function run(){
        var ret;
        $http.get('lib/data.txt')
             .success(function(datax){
               ret = datax;})
             .error(function(){
               console.log("No Data");});
        return ret;
      }
    
    }))


  • 我认为问题在于,
    不是指您的服务对象

    “即使它看起来是指定义它的对象,但直到对象调用this函数,它才被实际赋值。分配给它的值完全基于调用此函数的对象。在大多数情况下,它具有调用对象的值。但是,在一些情况下,它没有调用对象的值。我稍后再谈这些情况。”

    当我们借用使用this的方法、将使用this的方法赋给变量、将使用this的函数作为回调函数传递以及在闭包中使用this时,this关键字最容易被误解

    如果我是你,我会使用其他类型的语法,例如:

    angular.module('myApp').factory('myfuncA', dataService);
    
    /* @ngInject */
    function dataService($http) {
        var service = {
            getData: getData
        };
    
        return service;
    
        function getData() {
            return $http.get('lib/data.txt');//$http.get method returns HttpPromise
        }
    }
    
    那么使用它:

    myfuncA.getData().then(function (result) {
        //your code
    }
    

    尝试在http.get()中使用完整路径您将获得CORS errorXMLHttpRequest无法加载。请求的资源上不存在“Access Control Allow Origin”标头。因此不允许访问Origin“”。请参阅数据正在传输,但情况是u共享的数据和我粘贴的数据,但它不会出现在视图中。您需要将承诺返回给控制器,然后继续控制器设置$scope变量,然后从返回的承诺回调-如果我得到时间,time将发布一些代码。