我正在使用Ember CLI开发一个实质性的ember应用程序,我正在努力解决它的一些方面。
我想做的是:
例如:
/path/to/dropdown
- 显示用户选择的下拉列表,然后将其发布到后端。除了其他数据之外,后端还会回复:
slug: <stringValue>
然后转换为:
/path/to/slug
- 其中slug
为<stringValue>
到目前为止,我有1&amp; 2以上工作,但我无法弄清楚如何使第3步工作。我尝试在/path/to/slug
路由和/path/to/dropdown
控制器中使用序列化函数,但它始终返回undefined
。
基于用户的下拉选项,对服务器的AJAX调用发生在/path/to/dropdown
控制器中。
我将路由器设置为:
this.route('options', { path : ':slug' });
如果有人能指出我正确的方向,那会很棒;我希望我的例子足够清楚,但如果没有,请告诉我。
感谢。
答案 0 :(得分:0)
说实话,我不明白为什么要使用this.route('options', { path : ':slug' });
。您刚刚为所有可能的选项创建了唯一的路径(事实上,对于所有形式为/anything
的网址),但这不是您想要的。
我认为您的解决方案是this.transitionToRoute(url_string)
,可在任何控制器中使用。检查api示例there。但是,在您应该在路由器中声明所有路由并为它们创建操作文件之前,当然。
如果您不想为每个可能的段塞创建路线,那么您的路线非常好,但至少我会考虑添加一个路径段。例如,this.route('options', { path : '/slugs/:slug' });
。
之后,您可以运行transitionTo
并将数据(以任何格式)传递给它。数据将被分配给路径模型,您将能够在SlugRoute(和SlugController,如果您没有重新定义setupControler
方法)中将其用作this.get('model')
变量。
如果要从视图运行转换,首先需要获取控制器并向其发送特殊命令。