- EmberJS 教程
- EmberJS - 主页
- EmberJS - 概述
- EmberJS - 安装
- EmberJS - 核心概念
- 创建和运行应用
- EmberJS - 对象模型
- EmberJS - 路由器
- EmberJS - 模板
- EmberJS - 组件
- EmberJS - 模型
- EmberJS - 管理依赖
- EmberJS - 应用问题
- EmberJS - 配置 Ember.js
- EmberJS - Ember 检查器
- EmberJS 有用资源
- EmberJS - 快速指南
- EmberJS - 有用资源
- EmberJS - 讨论
路由器指定查询参数
您可以在路由驱动的控制器上指定查询参数,这些控制器可以绑定在 URL 中,并且通过在控制器上声明查询参数以使它们生效,配置该查询参数。您可以通过定义一个数组的查询参数过滤器(query parameterfilter)计算属性来显示模板。
语法
Ember.Controller.extend ({ queryParams: ['queryParameter'], queryParameter: null });
示例
下面给出的示例展示了在路由驱动的控制器上指定查询参数。创建一个新路由,将它命名为 specifyquery,然后打开 router.js 文件以定义 URL 映射 −
import Ember from 'ember'; //Access to Ember.js library as variable Ember import config from './config/environment'; //It provides access to app's configuration data as variable config //The const declares read only variable const Router = Ember.Router.extend ({ location: config.locationType, rootURL: config.rootURL }); //Defines URL mappings that takes parameter as an object to create the routes Router.map(function() { this.route('specifyquery'); }); //It specifies Router variable available to other parts of the app export default Router;
在 app/templates/ 下创建文件 application.hbs,使用以下代码 −
<h2>Specifying Query Parameters</h2> {{#link-to 'specifyquery'}}Click Here{{/link-to}}
当您点击以上链接时,该页面应会打开一个表单。打开文件 specifyquery.hbs,以便在路由驱动的控制器上发送参数 −
//sending action to the addQuery method <form {{action "addQuery" on = "submit"}}> {{input value = queryParam}} <input type = "submit" value = "Send Value"/> </form> {{outlet}}
现在定义 queryParam 计算属性的过滤数组,它将显示 specifyquery 模板 −
import Ember from 'ember'; export default Ember.Controller.extend ({ //specifying the 'query' as one of controller's query parameter queryParams: ['query'], //initialize the query value query: null, //defining a computed property queryParam queryParam: Ember.computed.oneWay('query'), actions: { addQuery: function () { //setting up the query parameters and displaying it this.set('query', this.get('queryParam')); document.write(this.get('query')); } } });
输出
运行 ember 服务器,您将收到以下输出 −
当您点击该链接时,它将提供一个输入框以输入值,并向 addQuery 方法发送一个操作 −
点击该按钮之后,它将以键值对的形式显示在 URL 的 ? 右侧 −
emberjs_router.htm
广告