Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从不同的控制器Ember.js向模型添加新记录_Javascript_Ember.js_Ember Data - Fatal编程技术网

Javascript 从不同的控制器Ember.js向模型添加新记录

Javascript 从不同的控制器Ember.js向模型添加新记录,javascript,ember.js,ember-data,Javascript,Ember.js,Ember Data,我有两个控制器和两个模型。(我有第三个,组,但这在这种情况下无关紧要。)我的模型是这样关联的: App.Favorite = DS.Model.extend({ lodge: DS.belongsTo('lodge'), notes: DS.attr('string'), groups: DS.hasMany('group', {async:true}), photo: DS.attr('string'), }); App.Lodge = DS.Model.ext

我有两个控制器和两个模型。(我有第三个,
,但这在这种情况下无关紧要。)我的模型是这样关联的:

App.Favorite = DS.Model.extend({
    lodge: DS.belongsTo('lodge'),
    notes: DS.attr('string'),
    groups: DS.hasMany('group', {async:true}),
    photo: DS.attr('string'),
});
App.Lodge = DS.Model.extend({
    name: DS.attr('string'),
    address: DS.attr('string'),
    website: DS.attr('string'),
    phone: DS.attr('string'),
    uniqueDescription: DS.attr('string'),
    basicDescription: DS.attr('string'),
    yearOpened: DS.attr('string'),
    propertySize: DS.attr('string'),
    propertyType: DS.attr('string'),
    languages: DS.attr('string'),
    owner: DS.attr('string'),
    uniqueQualifier1: DS.attr('string'),
    uniqueQualifier2: DS.attr('string'),
    uniqueQualifier3: DS.attr('string'),
    uniqueQualifier4: DS.attr('string'),
    lowDayPrice: DS.attr('string'),
    highDayPrice: DS.attr('string'),
    favoriteBoolean: DS.attr('boolean')
});
在我的
lodge
模板中,我试图“指定”那个特定的lodge成为我的最爱。那么,如何从
lodge
控制器向其模型添加新的
favorite
记录?据我所知,余烬指南和API似乎没有这个用例

旅馆管理员样本:

App.LodgeController = Ember.ObjectController.extend({
    actions: {
        createFavorite: function() {
            // Not sure what to do here
            //
            // Create new record
            //
            // Then transition to newly created record route
        }   
    }
});
路线:

App.Router.map(function() {
  this.resource('groups', { path: '/groups' });
  this.resource('group', {path: '/group/:group_id'});
  this.resource('favorites', {path: '/favorites'});
  this.resource('lodges', {path: '/'});
  this.resource('favorite', {path:'/favorite/:favorite_id'})
});

我认为您应该能够在
createFavorite
函数中执行以下操作:

var lodge = this.get('content');
var fav = this.store.createRecord('farvorite',{ lodge : lodge });
var _this = this;  // Inside didCreate 'this' will point to something different
fav.on('didCreate',function(){
  _this.transitionToRoute('favorite',fav);
});
fav.save();