尝试在不使用ember数据的情况下获取对Ember路径中的模型的对象的引用

时间:2013-12-14 16:12:37

标签: ember.js

我正在评估EmberJs的一个项目并通过Tom Dale的余烬截屏工作。但我没有使用Ember Data并且我正在尝试调整我们的内容(本例中为Post对象)。

在Ember Data模型中,他使用this.get('store')。commit()来保存并持久保存到服务器。我试图在Post模型上获取一个保存对象,并在用户单击应触发save方法的按钮时调用它。我该怎么做?我试过的是在底部(this.save,this.model.save,this.post.save),但已经包含了几乎所有的代码。此外,这种一般方法是否合理?

请求帮助

window.Hex = Ember.Application.create();

Hex.Router.map(function() {
    this.resource('posts', function(){
        this.resource('post', { path: ':post_id' });
    });
});

// the model class
Hex.Post = Ember.Object.extend({
    save: function(){ a
        console.log("you clicked save");
    }

});


Hex.PostRoute = Ember.Route.extend({
    model: function(params) {
      return $.getJSON("/arc/v1/api/all-post", function(data){
        var post = Hex.Post.create();
        post.set('id', data.id);
        return post;
      });
    }
});

Hex.PostController = Ember.ObjectController.extend({
    isEditing: false,
   actions:{
    edit: function() {
        this.set('isEditing', true);
        console.log("within edit");
    },

    doneEditing: function() {
        this.set('isEditing', false);
        this.save();  // doesn't work  trying to get a reference to the post object
        this.model.save();  // doesn't work - undefined
        this.post.save(); // doesn't work - undefined
        //this.get('store').commit(); what is called in the sample app
    }
   }
});

1 个答案:

答案 0 :(得分:0)

我们在工作时使用的是没有EmberData的Ember。我们通常将任何与请求相关的逻辑放在ActiveRecord模式之后的模型中。所以我们路线中的模型钩子通常看起来像这样:

Hex.PostRoute = Ember.Route.extend({
   model: function(params) {
     return Post.find(params); // returns a promise
   }
});

你的问题非常简单。在控制器内部,您可以使用content属性访问模型,因此您必须使用以下内容:

this.get('content').save();

我认为save方法也会返回一个承诺。 希望它有所帮助!