angular.js - Bagaimana untuk mengembalikan objek Promise kosong dalam Angularjs1.5
世界只因有你
世界只因有你 2017-05-15 17:14:26
0
2
1288

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!

世界只因有你
世界只因有你

membalas semua(2)
大家讲道理
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('无法获取到正确的数据'))
  }
}
黄舟

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

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan