路由器选择进入完整转换
当控制器查询参数属性更改为选择进入完整转换时,您可以使用可选的 queryParams 配置,方法是将 refreshModel 配置属性设置为 true。transitionTo 或 link-to 参数将在查询参数值中更改,但不会在路由层次结构中更改;控制器属性也将在 URL 中使用新的查询参数值进行更新。
语法
Ember.Route.extend ({ queryParams: { queryParameterName: { refreshModel: true } } });
示例
下面给出的示例显示了当控制器查询参数属性发生变化时选择完全转换。创建一个新路由并将其命名为 paramfulltrans,然后打开 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('paramfulltrans'); }); //它指定可供应用程序其他部分使用的 Router 变量 export default Router;
使用以下代码打开在 app/templates/ 下创建的文件 application.hbs
<h2>Opting Into a Full Transition</h2> {{#link-to 'paramfulltrans'}}Click Here{{/link-to}}
单击上述链接时,页面应打开一个输入框,该输入框接受用户输入的值。打开 paramfulltrans.hbs 文件,使用 queryParams 配置选择完全转换 −
//将操作发送到 addQuery 方法 <form {{action "addQuery" on = "submit"}}> {{input value = queryParam}} <input type = "submit" value = "Send Value"/> </form> {{outlet}}
现在定义 queryParam 过滤数组的计算属性,它将显示 paramfulltrans 模板 −
import Ember from 'ember'; export default Ember.Controller.extend ({ //将"query"指定为控制器的查询参数之一 queryParams: ['query'], //初始化查询值 query: null, //定义计算属性 queryParam queryParam: Ember.computed.oneWay('query'), actions: { addQuery: function () { //设置查询参数并显示它 this.set('query', this.get('queryParam')); document.write(this.get('query')); } } });
现在在具有相应控制器的 Route 上使用 queryParams 配置,并在 app/routes/ 下定义的 paramfulltrans.js 文件中将 refreshModel 配置属性设置为 true。
import Ember from 'ember'; export default Ember.Route.extend ({ queryParams: { query: { //opting into full transition refreshModel: true } } });
输出
运行 ember 服务器,您将收到以下输出 −
![Ember.js Router Opting Into Full Transition](/emberjs/images/emberjs-router-opting-full-transition.jpg)
单击链接时,它将生成一个输入框,您可以在其中输入值并向 addQuery 方法发送操作 −
![Ember.js Router Opting Into Full Transition](/emberjs/images/emberjs-router-opting-full-transition1.jpg)
单击按钮后,它将在 URL 中" ?"右侧显示参数值 −
![Ember.js Router Opting Into Full Transition](/emberjs/images/emberjs-router-opting-full-transition2.jpg)