Ember CLI路径基于服务器响应

时间:2015-05-15 13:48:25

标签: ember.js ember-data ember-cli

我正在使用Ember CLI开发一个实质性的ember应用程序,我正在努力解决它的一些方面。

我想做的是:

  1. 显示选项下拉列表
  2. 当用户选择一个选项时,将他们的选择发布到后端
  3. 来自服务器的响应包含基于用户在下拉列表中选择的内容的数据。获得服务器响应后,我想转换到新路径,其中路径以服务器返回的值之一结束。
  4. 例如:

    /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' });

    如果有人能指出我正确的方向,那会很棒;我希望我的例子足够清楚,但如果没有,请告诉我。

    感谢。

1 个答案:

答案 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')变量。

如果要从视图运行转换,首先需要获取控制器并向其发送特殊命令。