2015-07-03 26 views
0

我剛開始使用ember並試圖做一個簡單的測試。 其中,也很簡單,讓我卡住了一些原因,我無法找到答案的任何地方。在不改變路線的情況下從動作函數中加載/重新加載數據

所以我需要從服務器加載數據而不轉換到另一條路由,並從submit動作(或針對該事件的任何其他動作)內執行此操作。

我有一個簡單的輸入表單,我手動輸入一個對象ID和 我希望它被加載,正好在下面。夠簡單。接縫是角度三分鐘的工作。在這裏,我只是無法獲得路由和控制器之間的溝通。

所以給這個小徽

form submit="submit" 
    = input type="text" value=oid 
    button type="submit" Submit 
#display 
    = person 

而且這條路

import Ember from 'ember'; 

export default Ember.Route.extend({ 
    model: { 
     person: null 
    }, 
    actions: { 
    submit: function() { 
    var oid = this.controllerFor('application').get('oid'); 
    var person = this.store.find('person', oid); 
    this.modelFor('application').set('person', person); 
    } 
} 
}); 

這是據我能想到。我想單擊一個對象的ID提交,我希望該對象加載並顯示在div#顯示。

那麼我做錯了什麼?什麼是正確的做法?

首先,我甚至不知道把這種行爲放在哪裏?控制器或路由? 如果我把它放在控制器中,我不知道如何刷新模型。如果我把它放在路線上,我堅持以上。如果操作被放置在控制器中,看看如何去做也會很好。

爲簡單起見我只是做這一切在申請航線,模板,控制器...

謝謝

回答

0

給它響應UI把你的代碼的最佳位置是在控制器,所以這樣做在你的控制器上代碼要簡單得多。

在這jsfiddle我已經把一些虛擬代碼,試圖做你想做的事情。

//Index Route 
App.IndexRoute = Ember.Route.extend({ 
    model: function() { 
    return ['red', 'yellow', 'blue']; 
    } 
}); 

//Here my dummy controller. 
App.IndexController = Ember.Controller.extend({ 
    oid: 1, 
    actions: { 
     submitAction() { 
     //Here your logic to find record given the input and attach 
     //the response to the model object as UI is binding to model 
     //if you add/remove new records they will show up. 
     //On this example I have added a new object. 
     this.get('model').addObject('green'); 
     } 
    } 
}) 

Enjoy!

相關問題