2014-08-27 167 views
0

我在學習ember.js和ember-cli時遇到了很多困難,主要是試圖將ember.js的幫助文檔翻譯成ember-cli環境。我一直在試圖弄清楚如何使用除'id'之外的字段的動態段。Ember和Ember-cli動態路由問題

Emberjs.com它給出了一個使用jQuery.getJSON和序列化功能的例子,但我不知道

1)如何從灰燼-CLI參考的jQuery(如果我甚至需要做到這一點的上面的鏈接說來),並

2)好像不管我怎麼努力,我得到的錯誤

我目前使用transitionToRoute「不能打電話的‘未定義’GET方法」在我的序列化功能因爲我試圖從一個按鈕而不是link-to幫手轉換(更好的建議非常好來)。

這裏的行動我的按鈕使用(這是在控制器):

actions: { 
    viewDetails: function() { 
    this.transitionToRoute('project-details', this.get('projectName')); 
    } 
} 

如果我的路線是:

this.resource('project-details', {path: '/project/:project_projectName'});

然後灰燼文檔建議,這是在我的項目細節路線中需要什麼,但是我沒有得到序列化程序的任何組合,所以我確信我做錯了什麼,但我不知道是什麼。

model: function(params) { 
    //I've tried all kinds of things in here, not sure if I need getJSON 
    // since right now I'm just using fixture data 
    //If I do need jQuery, not sure how to use it in ember-cli (i.e. the import statement to use) 
    return jQuery.getJSON('/project/' + params.project_projectName); 
}, 

serialize: function(model) { 
    return { project_projectName: model.get('projectName') }; 
} 

編輯:添加模型

var Project = DS.Model.extend({ 
    creationDate: attr('date'), 
    lastModifiedDate: attr('date'), 
    lastModifiedResourceId: attr('string'), 
    ppmcNumber: attr('number'), 
    ppmcUrl: attr('string'), 
    phase: attr('string'), 
    staffingProfile: attr('string'), 
    projectType: attr('string'), 
    projectDesc: attr('string'), 
    product: attr('string'), 
    clientId: attr('string'), 
    clientName: attr('string'), 
    overallStatus: attr('string'), 
    liveDate: attr('date'), 
    rygStatus: function(){ 
    return 'status-' + this.get('overallStatus').toLowerCase(); 
    }.property('overallStatus') 
}); 
+0

定義了「projectName」的位置?我假設這個錯誤是因爲「get」沒有找到它的值。 – Grapho 2014-08-27 13:13:48

+0

@Grapho:項目​​名稱在項目模型上定義。該錯誤是說它不能訪問「未定義」的「get」方法,我認爲它不知道模型是什麼,所以它不能執行get方法。 – redOctober13 2014-08-27 13:57:42

+0

我有點困惑,你的模型是燼數據,但你使用$ .getJSON。你什麼時候創建/使用該燼數據模型? – Kingpin2k 2014-08-27 23:30:14

回答

1

您需要使用Ember.get因爲你的對象不是灰燼對象(這可以很容易糾正,通過包裝對象在Ember.Object.create({})中,但吸氣劑和吸附劑僅適用於灰燼物體)

serialize: function(model) { 
    return { project_projectName: Em.get(model, 'projectName') }; 
} 
+0

對我有意義,但是如果我把它放入,我得到一個錯誤,說它無法找到LowCase的方法,它在我的模型上用於某個字段:rygStatus:function(){return'status-'+ this.get( 'overallStatus')toLowerCase(); } .property('overallStatus')' – redOctober13 2014-08-27 16:31:54

+0

聽起來你在這個過程中更遠了,你會介意拋棄上面的模型,顯然'overallStatus'是undefined/null那裏,但我不知道該屬性的範圍是。 – Kingpin2k 2014-08-27 16:35:19