2017-05-23 55 views
0

所以,我試圖在控制器中訪問我的模型屬性。在控制器中訪問模型屬性 - Ember

控制器

dashobards: [ 
{ id: 12, name: 'test' }, 
{ id: 17, name: 'test2' }, 
]; 

路線我已經型號命名儀表盤

return Ember.RSVP.hash({ 
dashboards: this.store.findAll('dashboard'), 
}).then((hash) => { 
    return Ember.RSVP.hash({ 
    dashboards: hash.dashboards 
    }); 
}, self); 

我想有結果控制器這樣的:

dashboards: [ 
{ id: 12, name: 'test' }, 
{ id: 17, name: 'test2' }, 
{ id: 17, name: 'test1' }, 
{ id: 20, name: 'test20' }, 
]; 

在控制器我試圖訪問這個模型是這樣的:

this.dashborads = this.get(model.dashobards) 

而且它不工作,有沒有這樣做的任何其他方式?

回答

0

另一個更新如何訪問複雜的對象,我們從灰燼數據模型attibute服務器得到它,

Created twiddle證明

定義屬性與DS.attr(),

export default Model.extend({ 
    permissions:DS.attr() 
}); 

路由文件,

model(){ 
    return this.store.findAll('dashboard'); 
    } 

您的服務器響應s HOULD像,

data: [{ 
     type: 'dashboard', 
     id: 1, 
     attributes: { 
      permissions: {'name':'role1','desc':'description'}   
     } 
     }] 

HBS文件,

{{#each model as |row| }} 
Name: {{row.permissions.name}} <br/> 
Desc: {{row.permissions.desc}} <br /> 
{{/each}} 

更新: 不過我不知道的要求,你玩弄應minimalized工作玩弄更好understanding..anyway我將提供我的觀察,

1.

model(params) { 
    this.set('id', params.userID); 
    const self = this; 
    return Ember.RSVP.hash({ 
     dashboards: this.store.findAll('dashboard'), 
     user: this.store.findRecord('user', params.userID) 
    }).then((hash) => { 
     return Ember.RSVP.hash({ 
      user: hash.user, 
      dashboards: hash.dashboards 
     }); 
    }, self); 
} 

上面的代碼能夠簡單地寫的

model(params) { 
    this.set('id', params.userID); 
    return Ember.RSVP.hash({ 
     dashboards: this.store.findAll('dashboard'), 
     user: this.store.findRecord('user', params.userID) 
    }); 
} 
  • 其良好總是初始化init方法內陣列的特性。請參考https://guides.emberjs.com/v2.13.0/object-model/classes-and-instances/

  • 對於從陣列中刪除條目, this.dashboard.pushObject({ 'identifier': '', 'role': '' });試試這個this.get('dashboard').pushObject({ 'identifier': '', 'role': '' });

  • 如果可能的話,而不是簡單的目的可以使用Ember.Object像

    this.get('dashboard').pushObject(Ember.Object.create({ 'identifier': '', 'role': '' })); 
    
  • 爲了除去條目。
  •  
        removeDashboard(i) { 
         let dashboard = Ember.get(this, 'dashboard'); 
         Ember.set(this, 'dashboard', dashboard.removeObject(dashboard[i])); 
        } 
    

    上面的代碼可以這樣寫,因爲i是索引

    removeDashboard(i) { 
        this.get('dashboard').removeAt(i) 
    } 
    

    只是做return this.store.findAll('dashboard');在路線模型掛鉤,並且不要忽略setupController鉤,然後在HBS你應該能夠訪問將代表RecordArray的model。你可以看看this answer以瞭解如何使用它。

    +0

    看起來你已經發布了這些類似的問題,我鼓勵你使用mebr-twiddle.com並將其分享給我們。這將有助於解決你面臨的問題 – kumkanillam

    +0

    在這裏你去,希望有一切需要: https://ember-twiddle.com/be6fdaa3d09e60a1e1dcfd352e7fd103?openFiles=controllers.edit.js%2C 什麼我試圖do是用戶模型的訪問權限屬性。我想收集這些屬性並將它們發送給控制器。然後,從控制器我想發送它到模板。在我的應用程序中,我擁有使用儀表板權限的用戶,現在我正在構建用戶編輯頁面,並且需要加載用戶儀表板權限才能更改它們。另外我應該有可能爲用戶添加新的儀表板。 – kamrza

    +0

    這是一個好主意嗎?我也嘗試過使用each-in循環。它的工作,但是,我看到了用戶的儀表板權限,但後來我無法使用按鈕刪除並保存它們。 – kamrza