cari

Rumah  >  Soal Jawab  >  teks badan

angular.js - Bagaimana untuk mengembalikan objek Promise kosong dalam Angularjs1.5

Dalam angular1.5.8, apabila saya memanggil antara muka untuk mengembalikan data, jika parameter permintaan kosong atau tidak ditentukan, maka kembalikan, tetapi nilai yang dikembalikan oleh pulangan ini kosong dan tidak mempunyai .then, dan ralat dilaporkan
Kod kes:

onGoodsNameAutoComplate = (value: string) => {
        if (!this.clientId || !this.$scope.goodsTypeId) {
            return;//这边返回就是空的,没有.then,则会报错
        };
        return this.goodsService.getList(this.clientId, value, this.$scope.goodsTypeId, 0, 5).then(res => {
            return res.data.list;
        })
    }
    

Kod ralat:

TypeError: Cannot read property 'then' of undefined
    at T (angucomplete-alt.min.js:2)
    at $ (angucomplete-alt.min.js:2)
    at m.b.onFocusHandler (angucomplete-alt.min.js:2)
    at fn (eval at compile (angular.js:14817), <anonymous>:4:233)
    at b (angular.js:15906)
    at e (angular.js:25885)
    at m.$eval (angular.js:17682)
    at m.$apply (angular.js:17782)
    at HTMLInputElement.<anonymous> (angular.js:25890)
    at HTMLInputElement.dispatch (jquery.min.js:3)

Saya mahu berada di sini:

 if (!this.clientId || !this.$scope.goodsTypeId) {
                return;//这边模拟返回一个空的promise对象,就不会报错了。。。
            };

Bagaimana untuk mensimulasikan objek janji kosong? Cari penyelesaiannya! Terima kasih!

世界只因有你世界只因有你2856 hari yang lalu1306

membalas semua(2)saya akan balas

  • 大家讲道理

    大家讲道理2017-05-15 17:16:26

    onGoodsNameAutoComplate = (value: string) => {
      return $q(function (resolve, reject) {
        if (!this.clientId || !this.$scope.goodsTypeId) {
          reject('xxx不能为空')
          return
        }
        this.goodsService.getList(this.clientId, value, this.$scope.goodsTypeId, 0, 5).then(
          res => {
            resolve(res.data.list)
          },
          () => reject('无法获取到正确的数据'))
      }
    }

    balas
    0
  • 黄舟

    黄舟2017-05-15 17:16:26

    Pertama sekali, saya menggunakan ng1+ts di sini Saya perlu memberi perhatian untuk menyuntik $q dahulu

    private $q: ng.IQService
    angular.module("app").controller("$q",demoController]);
     var deferred = this.$q.defer();
            if (!this.clientId || !this.$scope.goodsTypeId) {
                // deferred.resolve("well done!");
            } else {
                return this.goodsService.getList(this.clientId, value, this.$scope.goodsTypeId, 0, 5).then(res => {
                    return res.data.list;
                })
            }
            return deferred.promise;

    Saya jumpa cara yang lebih baik

    balas
    0
  • Batalbalas