我在访问AngularJS中的$ resource变量时遇到问题

时间:2018-07-12 20:21:05

标签: angularjs ngresource angularjs-resource

我请求php获取JSON字符串,当我使用401 Unauthorized访问模板中的字符串时,它将返回带有值的字符串,但是当我尝试在控制器中使用相同的模型时( $ctrl.respostas[0].status),什么也没有,我需要检查控制器中的答案,但我不知道如何,任何人都可以帮助我?

this.respostas[0].status

控制器

Template: 
<p>respostas: {{$ctrl.response}}</p>
<p>confere: {{$ctrl.test}}</p>
<p>status: {{$ctrl.response[0].status}}</p>

请求

angular.
    module('tela').
    component('tela', {
        templateUrl: 'tela/tela.template.html',
        controller: ['Request',
            function telaController(Request, ̶$̶r̶o̶o̶t̶S̶c̶o̶p̶e̶) {
                this.test = "ola";
                this.id = "1";
                this.validate = function validate() {
                    this.response= Request.save({id: this.id},[]);
                    this.test = "algo";
                    this.test = this.response[0].status;
                }
            }
        ]
    });

1 个答案:

答案 0 :(得分:0)

重要的是要意识到,调用$resource对象方法会立即返回空引用(对象或数组取决于isArray)。从服务器返回数据后,将使用实际数据填充现有引用。

HTML模板显示数据是因为插值绑定{{ }}在每个摘要周期检查对象并更新DOM。另一方面,控制器需要使用附加的承诺来检查数据:

app.component('tela', {
    templateUrl: 'tela/tela.template.html',
    controller: ['Request',
        function telaController(Request, ̶$̶r̶o̶o̶t̶S̶c̶o̶p̶e̶) {
            this.test = "ola";
            this.id = "1";
            this.validate = function validate() {
                this.response= Request.save({id: this.id},[]);
                var promise = this.response.$promise;
                promise.then(data => {
                    console.log(data[0].status);
                    console.log(this.response[0].status);
                });
            }
        }
    ]
});

从文档中:

  

资源实例和集合具有以下附加属性:

     
      
  • $promise:创建该实例或集合的原始服务器交互的承诺。

         

    成功后,将使用相同的资源实例或集合对象解析承诺,并使用来自服务器的数据进行更新。

         

    失败时,承诺将被http response对象拒绝。

  •   
     

— AngularJS $resource API Reference - Usage