如何将包含模型ID的路由转换为将id存储在变量中?

时间:2015-10-10 05:27:42

标签: ember.js

这是我的router.js:

[NSString stringWithFormat:@"\"Hi There=\" Other text"];

我正在尝试这样做,以便当用户从导航栏组件中选择一个选项时,它们将被重定向到相应的categories / category_id页面。我能够将正确的ID输入到navbar组件中的变量中,但是我的this.transitionTo语句不起作用。这是navbar-header.js:

从'ember'导入Ember;

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

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

Router.map(function() {
  this.route('category', {path: '/category/:category_id'});
  this.route('listing', {path: '/listing/:listing_id'});
});

export default Router;

我做错了什么?

编辑:向所有人开放,你不能从一个组件进行转换,你必须使用一个动作并将其发送回路线。正如joshfarrent所说的应该是this.transitionTo('category',catId);

1 个答案:

答案 0 :(得分:3)

您需要将Id作为单独的参数传递到transitionTo,并删除斜杠,如下所示:

this.transitionTo('category', catId);

请参阅Ember Route文档的transitionTo部分here

我还建议不要使用HTML元素的值来确定哪个项目已被选中,而是在模板中的每个动作助手上执行类似的操作:

{{action "categorySelected" VALUE}}

只需将VALUE替换为您在HTML元素上设置的相同数值即可。这样,元素的值将传递给categorySelected函数,如下所示:

categorySelected: function(value) {
   debugger;

   this.transitionTo('category', value);
 }

最后,您是否有理由不仅使用{{link-to}}助手来达到同样的效果?