簡體   English   中英

Emberjs-承諾的setProperties

[英]Emberjs - setProperties from a Promise

我正在嘗試從Promise的內部在路由器中設置變量,但似乎未正確設置。

我創建了一個小示例向您展示:

App.ApplicationRoute = Ember.Route.extend({
    myVar: null,

    model: function() {
        var data = getData();
        console.log(myVar); // = null
        return data;
    },
    getData: function() {
        var self = this;
        return new Ember.RSVP.Promise( function(resolve, reject) {
            self.setProperties({ myVar: 42 });

            resolve(someGoodStuff);

            reject(someBadStuff)
        });
    }
})

當我嘗試顯示myVar時,即使它正在等待諾言解決,它仍然為null ...我需要做一些特別的事情嗎? 還是我做錯了?

我相信您正在尋找這樣的東西: http : //emberjs.jsbin.com/gosoj/3/edit?html,css,js,output

我不完全確定您要在這里做什么,因此還有一些其他注釋的代碼可能是您的意圖。

我認為問題可能出在您何時進行控制台日志記錄,以及您未正確使用getter和setter以及調用getData()的方式這一事實。

這是代碼:

App.ApplicationRoute = Ember.Route.extend({
  myVar: null,

  model: function() {
    var data = this.getData();
    console.log(data);
    console.log(this.get('myVar')); // = null
    return data;
  },
  getData: function() {
    var self = this;
    return new Ember.RSVP.Promise( function(resolve, reject) {
        self.setProperties({ myVar: 42 });
        resolve(42);

        reject(reason);
    }).then(function (value) {
        //self.setProperties({ myVar: value });
        console.log(self.get('myVar'));
    }, function(reason){
      console.log(reason);
    });
  }
})

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM