2016-09-21 60 views
0

我有一個控制器在那裏我從哈佛商學院的價值,它把我選定的國家價值。我需要該模型中選定的國家來計算並返回一些結果返回到hbs。如何在控制器中設置此值並將其置於模型中,以便我可以使用該值進行計算?將數據傳遞到在emberjs模型

+0

示例代碼將更清晰地解釋您的問題。我想你正在尋找控制器中的計算屬性來更新模型屬性 – kumkanillam

回答

0

那麼,可能有一些不同的方法來實現這一點。但是,我會給你一些例子,希望對你有所幫助。

//Controller.js 
notes: Ember.computed('model.notes.[]', '[email protected]', function() { 
    return this.get('model.notes').sortBy('date').reverse(); //This is an example of Computed function which in this case it's sorting notes based on date. 
}), 
blink: null, 
    actions: { 
    taskChangeColor: function() { 
     this.set('blink', 'blinker'); // this is another example that set new data by action which can be retrive from model and set to property 
    } 
    } 

或其他東西,你可以做的是使用計算函數模型本身像

// model.js which is using ember-data and moment 
    timeZone: DS.attr(), //for example one property coming from server 
    utcOffsetFormat: Ember.computed(function() { 
    let time = moment.tz(this.get('timeZone')).format('hh:mm a'); 
    return time; 
    // using a computed function to instantiate another value based on existing model property which means you can simpley use this property instead of direct one. 
    }) 

此外,你仍然有資格Route.js用行動而不是控制器的一個例子是:

//route.js 
actions: { 
    changeSave: function(step) { 
     var something = { 
     contact: this.currentModel, 
     }; 
     this.currentModel.set('step', something.contact); 
     this.currentModel.save().then(d => { 
     // set your alert or whatever for success promise 
     return d; 
     }).catch(e => { 
     console.log(error(e.message)); 
     return e; 
     }); 
    }, 

在上面的例子中,你可以看到,我已成立一個動作模型)指出,其可以輕鬆地設置(保存到完全相同的屬性名稱的模型,如果你這樣做,你的無線將立即在您的視圖中得到結果。

希望它可以幫助你。我推薦閱讀Ember-Docs

0

我會說,根據您的要求,您不需要selectedCountryValue的控制器屬性。你可以在模型中保留這個值。

在航線,

setupController(model,transition){ 
    this._super(...arguments); //this will set model property in controller. 
    Ember.set(model,'selectedCountryValue','US'); //you can set default value 
} 

和內部控制,您創建依賴於model.selectedCountryValue計算性能。並計算出一些結果

result:Ember.Computed('model.selectedCountryValue',function(){ 
//compute something return the result 
} 

在模板中,您可以直接使用{{model.selectedCountryValue}}