0

関数ブロック内から定義された変数 np にアクセスしようとしています。ただし、を呼び出すときにいくつかの問題が発生していますthis.items.push(plumbers)。私は得るTypeError: Cannot call method push of undefined

myApp.factory('np', function($resource, nearbyPlumbers){
  var np = function(){
    this.items = [];
    this.busy = false;
    this.limit = 5;
    this.offset = 0;
  };

  np.prototype.nextPage = function(){
    if (this.busy) return;
    this.busy = true;

    var temp;

    nearbyPlumbers.nearby({lat: -37.746129599999996, lng: 144.9119861}, function(data){
      angular.forEach(data, function(plumber){
        alert('yay');
        //this.items.push(plumber);
        console.log(plumber);
        console.log(this.items); // <--- This wont work. How do I access this.items
      });
    });
  };
  return np;
});
4

2 に答える 2

1
np.prototype.nextPage = function () {
    if (this.busy) return;
    this.busy = true;

    var temp;
    var that = this; // add this line

    nearbyPlumbers.nearby({
        lat: -37.746129599999996,
        lng: 144.9119861
    }, function (data) {
        angular.forEach(data, function (plumber) {
            that.items.push(plumber); //access using "that"
            console.log(plumber);
            console.log(that.items);
        });
    });
};
于 2013-09-01T05:49:07.277 に答える
0

シングルトンにアクセスするスコープによってthis異なるため、なぜ を使用しているのか非常に興味があります。thisそれはあなたが得ているエラーを説明するでしょう。

Angular のファクトリについて調べてから、コードをもう一度確認することを強くお勧めします。サービス ドキュメントは開始するのに適した場所であり、この質問も適切です。

于 2013-09-01T05:50:16.297 に答える