Ember 基于服务器响应的 CLI 路径
Ember CLI path based on server response
我正在开发一个实质性的 ember 应用程序,使用 Ember CLI,我正在努力解决它的几个方面。
我想做的是:
- 显示选项下拉列表
- 当用户选择一个选项时,post他们的选择到后端
- 来自服务器的响应包含基于用户在下拉列表中选择的数据。获得服务器响应后,我想转换到一条新路由,其中路径以服务器返回的值之一结束。
例如:
/path/to/dropdown
-- 显示供用户选择的下拉列表,然后将其发布到后端。后端响应,其中包括:
slug: <stringValue>
然后转换为:
/path/to/slug
-- 其中 slug
是 <stringValue>
到目前为止,我已经完成了上面的 1 和 2,但我不知道如何让第 3 步起作用。我试过在 /path/to/slug
路由和 /path/to/dropdown
控制器中使用序列化函数,但它总是 returns undefined
.
根据用户的下拉选择,对服务器的 AJAX 调用发生在 /path/to/dropdown
控制器中。
我将路由器设置为:
this.route('options', { path : ':slug' });
如果有人能指出正确的方向,那就太好了;我希望我的例子足够清楚,但如果不明白请告诉我。
谢谢。
老实说我不明白你为什么要用this.route('options', { path : ':slug' });
。您刚刚为所有可能的选项创建了唯一的路由(实际上,为所有 /anything
形式的 url),但这不是您想要的。
我认为您的解决方案是 this.transitionToRoute(url_string)
,它适用于任何控制器。检查 api 示例 there。但是在你应该在路由器中声明所有路由并为它们创建运行文件之前,当然。
如果您不想为每个可能的鼻涕虫创建一条路线,那么您的路线非常好,但至少我会考虑添加一个路径部分。例如,this.route('options', { path : '/slugs/:slug' });
。
之后,您可以 运行 transitionTo
并将数据(以任何格式)传递给它。数据将被分配给路由模型,您将能够在 SlugRoute(和 SlugController,如果您没有重新定义 setupControler
方法)中将其作为 this.get('model')
变量使用。
如果你想运行从视图转换,首先你需要获取控制器并向它发送一个特殊的命令。
我正在开发一个实质性的 ember 应用程序,使用 Ember CLI,我正在努力解决它的几个方面。
我想做的是:
- 显示选项下拉列表
- 当用户选择一个选项时,post他们的选择到后端
- 来自服务器的响应包含基于用户在下拉列表中选择的数据。获得服务器响应后,我想转换到一条新路由,其中路径以服务器返回的值之一结束。
例如:
/path/to/dropdown
-- 显示供用户选择的下拉列表,然后将其发布到后端。后端响应,其中包括:
slug: <stringValue>
然后转换为:
/path/to/slug
-- 其中 slug
是 <stringValue>
到目前为止,我已经完成了上面的 1 和 2,但我不知道如何让第 3 步起作用。我试过在 /path/to/slug
路由和 /path/to/dropdown
控制器中使用序列化函数,但它总是 returns undefined
.
根据用户的下拉选择,对服务器的 AJAX 调用发生在 /path/to/dropdown
控制器中。
我将路由器设置为:
this.route('options', { path : ':slug' });
如果有人能指出正确的方向,那就太好了;我希望我的例子足够清楚,但如果不明白请告诉我。
谢谢。
老实说我不明白你为什么要用this.route('options', { path : ':slug' });
。您刚刚为所有可能的选项创建了唯一的路由(实际上,为所有 /anything
形式的 url),但这不是您想要的。
我认为您的解决方案是 this.transitionToRoute(url_string)
,它适用于任何控制器。检查 api 示例 there。但是在你应该在路由器中声明所有路由并为它们创建运行文件之前,当然。
如果您不想为每个可能的鼻涕虫创建一条路线,那么您的路线非常好,但至少我会考虑添加一个路径部分。例如,this.route('options', { path : '/slugs/:slug' });
。
之后,您可以 运行 transitionTo
并将数据(以任何格式)传递给它。数据将被分配给路由模型,您将能够在 SlugRoute(和 SlugController,如果您没有重新定义 setupControler
方法)中将其作为 this.get('model')
变量使用。
如果你想运行从视图转换,首先你需要获取控制器并向它发送一个特殊的命令。