簡體   English   中英

使用Ember Data重新加載模型

[英]Model reloading with Ember Data

我正在嘗試使用記錄的model.reload()函數輪詢更多數據

App.ModelViewRoute = Ember.Route.extend({
  actions: {
    reload: function() {
      this.get('model').reload();
    }
  }
});

但是我收到一條錯誤消息說......

undefined is not a function TypeError: undefined is not a function

有沒有更好的方法來做到這一點,似乎我無法以這種方式從路線訪問模型?

這是路由器

App.Router.map(function() {
  this.route('video', { path: '/videos/:video_id' });
});

這是路線

App.VideoRoute = Ember.Route.extend({
  model: function(params) {
    return this.store.find('video', params.video_id);
  },

  actions: {
    reloadModel: function() {
      // PROBLEM HERE
      // this.get('model').reload();
      Ember.Logger.log('reload called!');
    }
  }
});

這是模型

App.Video = DS.Model.extend({
   title: DS.attr('string'),
   status: DS.attr('string')
});

和模板

<script type="text/x-handlebars" data-template-name="application">
  <h1>Testing model reloading</h1>
  {{#link-to "video" 1}}view problem{{/link-to}}
  {{outlet}}
</script>

<script type="text/x-handlebars" data-template-name="video">
  <h1>Video</h1>
  <h2>{{title}}</h2>
  {{model.status}}
  <p><button {{action 'reloadModel'}}>Reload model</button></p>
</script>

我在這里寫了一個問題的jsbin:

http://jsbin.com/wofaj/13/edit?html,js,output

我真的不明白為什么重裝給我這個錯誤。 任何建議將不勝感激。

謝謝

路線的refresh方法將完成你所追求的目標

App.VideoRoute = Ember.Route.extend({
  model: function(params) {
    return this.store.find('video', params.video_id);
  },

  actions: {
    reloadModel: function() {
      this.refresh()
    }
  }
});

API文檔

由於model已作為Ember.Route上的鈎子存在,因此無法將其作為屬性。

相反,您可以執行以下操作:

this.modelFor('video').reload();

從技術上講,你可以這樣做this.get('currentModel').reload(); 也是如此,但那是沒有證件的,將來可能無法使用。

路徑模型功能提供了一個掛鈎來加載控制器數據。 余燼指南中有一個特定的部分。

1)如果您想訪問您的內容,它將是:

reload: function() {

  this.controller.get('content');

}

2) 重載是一種可用於ember-data對象的方法。 在您的示例中,您正在加載一個js對象({id:2,標題:“測試視頻標題2”,狀態:“下載”})。

暫無
暫無

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

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