我仍在学习Ember,希望获得一些帮助来解决此问题...

我有一个简单的图书馆应用程序,其中包含作者和书籍。 我想在我的作者视图模板中添加一个“添加书”链接,并且我希望该链接呈现一个定义了book.author的新书模板。 但我希望它显示在主插座中

我的模特:

App.Author = DS.Model.extend({
    name: DS.attr('string'),
    about: DS.attr('string'),
    picture: DS.attr('string'),
    books: DS.hasMany('book', {async: true})
});

App.Book = DS.Model.extend({
    title: DS.attr('string'),
    isbn: DS.attr('string'),
    summary: DS.attr('string'),
    isAvailable: DS.attr('boolean'),
    featured: DS.attr('boolean'),
    picture: DS.attr('string'),
    author: DS.belongsTo('author', {async: true})
});

这是我的路线:

App.Router.map(function () {

    this.resource('books', function () {
        this.route('edit', {path: '/:book_id/edit'});
        this.route('view', {path: '/:book_id'});
    });

    this.resource('authors', function () {
        this.route('new');
        this.route('edit', {path: '/:author_id/edit'});
        this.route('view', {path: '/:author_id'}, function (){
            this.resource('books', function(){
                this.route('new');
            });
        });
    });
});

网址将类似于authors/4/books/new

使用此嵌套路线,我只能在authors出口中显示我的books.new模板。 我无法在主电源插座上显示它。


我认为的另一种方式是使用那些路线

App.Router.map(function () {

    this.resource('books', function () {
        this.route('new');
        this.route('edit', {path: '/:book_id/edit'});
        this.route('view', {path: '/:book_id'});
    });

    this.resource('authors', function () {
        this.route('new');
        this.route('edit', {path: '/:author_id/edit'});
        this.route('view', {path: '/:author_id'});
    });
});

和使用QueryParams

网址会像books/new?author_id=4

模板显示正确,但是我无法将新书记录绑定到其作者。

使它起作用的“最佳最佳实践”是什么?您能给我一个可行的例子吗?

谢谢。

#1楼 票数:0

您的嵌套路线方法很好,然后在您的嵌套书籍/新控制器中添加:

needs: ['authors/view'],
author: Ember.computed.alias('controllers.authors.view.model')

然后假设您对书籍/新控制器执行“保存”操作:

save: function() {
  var model = this.get('model');
  var author = this.get('author');
  model.set('author', author);
  model.save().then(...);
}

  ask by Emmanuel P. translate from so

未解决问题?本站智能推荐:

1回复

灰烬嵌套路线。 加载更多模型

JsBin http://jsbin.com/EveQOke/153/ 我知道如何使用Ember.RSVP.hash将多个模型加载到路由。 (请参阅“ Jsbin儿童”菜单)。 我使用动态部分从children/1集合中访问一个元素。 但是我无法将更多模型加载到嵌套资源中。 在
1回复

灰烬数据:为什么有hasMany和belongsTo

我想知道为什么我必须在两个相关的数据集中定义hasMany 和 belongsTo? 由于所有必要的信息已经在一个阵列中,因此似乎很难保持两者同步。 它也不能反映sql数据库中的表,其中一对多关系中的一个表中只有一个外键。
1回复

删除灰烬HasMany

我正在使用具有多个hasMany关系的Ember-Data和[Kurko的Ember数据IndexedDB适配器]( https://github.com/kurko/ember-indexeddb-adapter )使用Ember.js。 我能够成功添加hasMany关系而没有任何问题。
2回复

灰烬路线如何?

我的问题是“简单”,但是用Ember无法解决它。 这是一个小型图书馆应用程序,作者和书籍的路线正常 现在,我想使用当前作者模板/authors/156的链接添加一条路线来注册新书 该路线必须打开books/new模板,并将new book对象与他的author链接:即,我要显
1回复

灰烬hasMany关系保存创建

我正在尝试从POJO创建具有hasMany关系的余烬数据记录,这非常困难。 这是使用ember-concurrency(因此执行task和yield语法。 因此,最棘手的是'obj.owner_ids',它是一个user_ids数组。 我将它们添加到数组中,但是需要在每个pushOb
2回复

灰烬错误说我指定了hasMany

尝试使用Ember 1.2应用程序完全不知所措。 我已经根据Ember的喜好对JSON进行了格式化,并按照指南中的所有说明进行了设置,但是我遇到了一些奇怪的错误。 这是我的JSON: 这是我的模型: 当尝试加载数据时,出现以下错误: 断言失败:您在Poll
2回复

灰烬无法从hasMany关系中获取数据

我尝试使用Ember数据构建Rails + Ember应用程序。 模型: export default DS.Model.extend({ name: DS.attr('string'), content: DS.attr('string'), image_bef
1回复

灰烬幻影模型:用于多个hasMany和belongsTo

我的页面有多个到服务器的AJAX调用。 现在,我正在用Mirage模拟数据以进行测试。 为此,我正在使用工厂。 我有页面渲染期间使用的所有模型的工厂。 所有模型都有很多关系,很少有hasMany和belongsTo模型,其他模型只有hasMany。 我在网上遇到过将afterc