gpt4 book ai didi

ember.js - Ember 将模型传递给 transitionToRoute

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

我在 ember 1.11 中使用 Ember-cli

我正在尝试使用 Controller 中的 transitionToRoute 方法转换到路由并将动态生成的对象作为模型提供给它。

这是我的 Controller :

import Ember from 'ember';

export default Ember.Controller.extend({
actions: {
launch_scanner: function(){
console.log('launch_scanner');
var model = {name: "Edward", phone: "123", email: "email@test.com"};
//the final app will pull the model variable from a QR scanner

this.transitionToRoute('addcontact', model);
}
}
});

当我触发此操作时,transitionToRoute 方法会导致此错误:

Uncaught Error: More context objects were passed than there are dynamic segments for the route: addcontact

如果我省略模型参数,它会很好地转换到 addcontact 路由。我做错了什么?

这是我的路由器文件:

import Ember from 'ember';
import config from './config/environment';

var Router = Ember.Router.extend({
location: config.locationType
});

Router.map(function() {
this.route('home', {path: '/'});
this.resource('addcontact', {path: '/addcontact'});
});

export default Router;

最佳答案

您正在处理许多 Ember 应用程序中出现的经典问题,即如何处理“新建”/“创建”情况。

你不能定义这样的路由

this.route('addcontact', { path: /addcontact/:thing_id }

因为新联系人没有 id,并且在它被持久化到服务器之前不会有,此时它不再是新的。

然而,在您的应用程序中有一些要点,在您的情况下,我假设在“主页”页面上,用户在该页面上按下了“新建联系人”按钮,并且它可能包含有关创建内容或如何创建它的有用信息,甚至可能想使用 this.store.createRecord 创建对象——但是如何将该信息或新记录传递到 addcontacdt 路由, 哪个可以没有动态段?

一些想法包括:

  1. 在您的 home 路由或其他任何地方创建新联系人,并将其存储在 Controller 中。然后,在新路由的 model Hook 中,使用 this.controllerFor('home').get('newContact') 检索它。

    <
  2. 使用 transitionTo('newcontact',查询参数)。然后,在 model Hook 中,使用 this.store.createRecord('contact', transition.queryParameters) 或类似的东西创建新对象。

    <

关于ember.js - Ember 将模型传递给 transitionToRoute,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30853090/

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