簡體   English   中英

如何從Ember CLI中的Route訪問Ember Model

[英]How to access Ember Model from the Route in Ember CLI

也許使用常規的Ember應用程序,將所有代碼放在app.js中對我來說會更容易。 但由於我使用的是Ember CLI,因此無法在我的路線中訪問我的模型。 我還在嘗試學習如何使用Ember CLI,所以請幫幫我。

因為我只想激活AJAX調用並在我的UI上渲染數據,所以我下載並將Ember Model庫添加到我的項目中。 我認為不需要使用Ember Data。 這是我所指的Ember Model文檔: https//github.com/ebryn/ember-model#example-usage 話雖如此,這是Ember CLI提出的我的目錄結構:

|-app    
  |-controllers
  | |-customers.js
  |-models    
  | |-customers.js
  |-routes    
  | |-customers.js
  |-templates    
  | |-customers.hbs
  |-app.js
  |-index.html
  |-main.js
  |-router.js

這是我只關注問題的實際項目結構的更簡單的表示。 正如Ember Model文檔中提出的,我將以下代碼添加到我的Customers模型(model \\ customers.js)中:

export default Ember.Model.extend({
    nameid: attr(),
    firstname: attr(),
    middlename: attr(),
    lastname: attr(),        
    prefixname: attr(),
    suffixname: attr()
});

this.url = "http://restapi/api/customers";
this.adapter = Ember.RESTAdapter.create();

請注意,我必須執行“export default”而不是“App.Customers = Ember.Model.extend ...”。 這是Ember CLI慣例。 因此,當我嘗試訪問我在Customers Route中創建的模型時,我收到錯誤“加載路徑時出錯:ReferenceError:App未定義”..

客戶路線代碼:

export default Ember.Route.extend({
    model: function () {
        App.Customers.find();
    },

    actions: {
        addnew: function(){
            //logic of saving edited customer
            alert('customer created!');
        }
    }
});

我試過this.model() - 返回supperWrapper類型的對象和this.modelFor() - 返回null。

請建議如何在路線中處理我的模型,以便我可以執行Ember Model開箱即用的CRUD操作。

謝謝!

我建議你將模型的文件名改為單數,例如customer.js

如果要訪問路徑文件中的模型類,則必須導入模型。 由於Ember CLI使用ES6模塊語法,因此您無法/不應直接在App對象上訪問任何內容。 這應該通過import語句或Ember內部通過解析器完成。

import Customer from "../models/customer";

現在您可以在模型鈎子中使用它。 您的示例代碼中還有另一個錯誤,您必須從查找調用返回承諾。

model: function () {
  return Customer.find();
},

我很好奇為什么你選擇Ember Model而不是Ember Data,因為在這個例子中你需要更少的Ember Data代碼,它更像是Ember方式AFAIK。

暫無
暫無

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

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