【问题标题】:trying to get a reference to an object that is the model in an Ember route without using ember data试图在不使用 ember 数据的情况下获取对作为 Ember 路由中模型的对象的引用
【发布时间】:2013-12-14 16:12:36
【问题描述】:

我正在为一个项目评估 EmberJs,并完成 Tom Dale 的 ember 截屏视频。但我没有使用 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
    }
   }
});

【问题讨论】:

    标签: ember.js


    【解决方案1】:

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

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

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

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

    我认为 save 方法也返回一个承诺是个好主意。 希望对您有所帮助!

    【讨论】:

    • thx,我对 Promise 没有太多经验 - 看起来像 jQuery 链接 Rails 链接方法。我确实注意到它甚至看起来不像 PostController ObjectController 中的模型对象被调用,而是从 PostsController ArrayController 自动生成。我将不得不对此进行更多研究。
    • 我在这里问了一个关于类方法和 Ember 的单独问题:stackoverflow.com/questions/20586434/… 以帮助理解这一点
    • 要充分利用路由器,肯定需要一些时间来学习和试验 Promise。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-25
    • 2013-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多