gpt4 book ai didi

ember.js - 用于显示/编辑和创建的相同 Ember.JS 模板

转载 作者:行者123 更新时间:2023-12-05 01:10:10 25 4
gpt4 key购买 nike

我正在使用 Ember.JS 编写一个 CRUD 应用程序:

  • 显示“ Action ”列表;
  • 用户可以单击一个 Action 来显示它,或者单击一个按钮来创建一个新 Action 。

  • 我想使用相同的模板来显示/编辑现有模型对象并创建一个新模型。

    这是我使用的路由器代码。
    App = Ember.Application.create();

    App.Router.map(function() {
    this.resource('actions', {path: "/actions"}, function() {
    this.resource('action', {path: '/:action_id'});
    this.route('new', {path: "/new"});
    });
    });

    App.IndexRoute = Ember.Route.extend({
    redirect: function() {
    this.transitionTo('actions');
    }
    });

    App.ActionsIndexRoute = Ember.Route.extend({
    model: function () {
    return App.Action.find();
    }
    });

    App.ActionRoute = Ember.Route.extend({
    events: {
    submitSave: function () {
    this.get("store").commit();
    }
    }
    });

    App.ActionsNewRoute = Ember.Route.extend({
    renderTemplate: function () {
    this.render('action');
    },

    model: function() {
    var action = this.get('store').createRecord(App.Action);
    return action;
    },

    events: {
    submitSave: function () {
    this.get("store").commit();
    }
    }
    });

    问题是当我第一次显示一个 Action ,然后回来创建一个新的时,看起来模板没有使用新创建的记录,而是使用之前显示的记录。

    我的解释是 Controller 和模板不同步。
    你会怎么做?
    也许有更简单的方法来实现这一目标?

    这是一个带有代码的 JSBin: http://jsbin.com/owiwak/10/edit

    最佳答案

    通过说 this.render('action') ,您不仅仅是告诉它使用 action模板,还有ActionController ,实际上您想要 action模板,但使用 ActionNewController .

    您需要覆盖:

    this.render('action', {
    controller: 'actions.new'
    });

    Updated JS Bin .

    关于ember.js - 用于显示/编辑和创建的相同 Ember.JS 模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15200281/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com