【问题标题】:Angular JS data response undefined [duplicate]Angular JS数据响应未定义[重复]
【发布时间】:2018-02-20 11:45:49
【问题描述】:

我是 Angular JS 的新手,正在尝试使用 JSON 数据调用 Rest API。当我运行 HTTP-server 时,没有取回我的响应数据。

function contacts(contactsdata) {
    contactsdata.getcontacts().then(function(data) {
        this.contactsinfo = data;
    });
}

(function(){ 
    var mod = angular.module('myapp');
    mod.controller("contacts", contacts);
    mod.service("contactsdata", function($http) {   
        this.getcontacts = function(){
            var execute1 = $http.get('http://localhost:3000/contacts');
            var execute2 = execute1.then(function(response) {
                return response.data;
            })
            return execute2;
        }
    });
})();

【问题讨论】:

    标签: javascript angularjs node.js json-server


    【解决方案1】:

    你可以在服务中试试这个

           this.getcontacts = function(){
               return $http.get('http://localhost:3000/contacts');
           });
    

    并用作

    contactsdata.getcontacts().then(function(response){
        this.contactsinfo = response.data;
    });
    

    【讨论】:

      【解决方案2】:

      这里的问题很少。

      1. 像这样初始化angular时需要传递一个空数组

        var mod = angular.module('myapp', []);

      2. 需要像这样在控制器中注入服务的依赖

        mod.controller("contacts", ['$scope', 'contactsdata', contacts]);

      3. 您可以从服务中返回承诺,例如 return $http.get... 并使用服务中的数据

      function contacts($scope, contactsdata) {
        contactsdata.getcontacts().
        then(function(data) {
          console.log(data)
        });
      }
      
      
      (function() {
        var mod = angular.module('myapp', []);
        mod.controller("contacts", ['$scope', 'contactsdata', contacts]);
        mod.service("contactsdata", ['$http', function($http) {
          this.getcontacts = function() {
            return $http.get('https://jsonplaceholder.typicode.com/posts/1')
          }
        }])
      
      })();
      <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
      <div ng-app="myapp">
        <div ng-controller="contacts"></div>
      </div>

      【讨论】:

      • 1) OP 可能在其他地方创建了模块,并且正在使用模块 getter angular.module(moduleName)
      • 2) 只有在缩小代码时才需要DI注解
      • 是的可能是但在代码sn-p中不可见,所以我注入了依赖数组
      • 3) OP 正在$http返回承诺
      • 当我运行上面的代码时。它显示“未定义联系人”@Phil
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多