路由器指定查询参数
您可以在路由驱动的控制器上指定查询参数,这些控制器可以绑定在 URL 中,并通过在控制器上声明查询参数来配置查询参数以使其处于活动状态。您可以通过定义数组的查询参数过滤器的计算属性来显示模板。
语法
Ember.Controller.extend ({ queryParams: ['queryParameter'], queryParameter: null });
示例
下面给出的示例显示了在路由驱动控制器上指定查询参数。创建一个新路由并将其命名为 specifyquery,然后打开 router.js 文件以定义 URL 映射 −
import Ember from 'ember'; //以变量 Ember 的形式访问 Ember.js 库 import config from './config/environment'; //它以变量 config 的形式提供对应用程序配置数据的访问 //const 声明只读变量 const Router = Ember.Router.extend ({ location: config.locationType, rootURL: config.rootURL }); //定义以参数为对象来创建路由的 URL 映射 Router.map(function() { this.route('specifyquery'); }); //它指定可供应用程序其他部分使用的 Router 变量 export default Router;
使用以下代码打开在 app/templates/ 下创建的文件 application.hbs −
<h2>Specifying Query Parameters</h2> {{#link-to 'specifyquery'}}Click Here{{/link-to}}
单击上述链接时,页面应打开并显示表单。打开 Specifyquery.hbs 文件以在路由驱动控制器上发送参数 −
//将操作发送到 addQuery 方法 <form {{action "addQuery" on = "submit"}}> {{input value = queryParam}} <input type = "submit" value = "Send Value"/> </form> {{outlet}}
现在定义query Param过滤数组的计算属性,它将显示指定查询模板 −
import Ember from 'ember'; export default Ember.Controller.extend ({ //将"query"指定为控制器的查询参数之一 queryParams: ['query'], //初始化查询值 query: null, //定义计算属性 queryParam queryParam: Ember.computed.oneWay('query'), action: { addQuery: function () { //设置查询参数并显示它 this.set('query', this.get('queryParam')); document.write(this.get('query')); } } });
输出
运行 ember 服务器,您将收到以下输出 −
单击链接时,它将提供一个输入框来输入值,并向 addQuery 方法发送操作 −
单击按钮后,它会在 URL 中 ? 的右侧显示键值对 −