- EmberJS 教程
- EmberJS - 首页
- EmberJS - 概述
- EmberJS - 安装
- EmberJS - 核心概念
- 创建和运行应用程序
- EmberJS - 对象模型
- EmberJS - 路由器
- EmberJS - 模板
- EmberJS - 组件
- EmberJS - 模型
- EmberJS - 管理依赖项
- EmberJS - 应用程序关注点
- EmberJS - 配置 Ember.js
- EmberJS - Ember 检查器
- EmberJS 有用资源
- EmberJS - 快速指南
- EmberJS - 有用资源
- EmberJS - 讨论
路由器选择完全过渡
当控制器查询参数属性发生变化时,您可以使用可选的 queryParams
配置来选择完全过渡,方法是将 refreshModel 配置属性设置为 true
。transitionTo
或 link-to
参数将更改查询参数值,但不会更改路由层次结构;控制器的属性也会在 URL 中更新为新的查询参数值。
语法
Ember.Route.extend ({ queryParams: { queryParameterName: { refreshModel: true } } });
示例
以下示例显示了当控制器查询参数属性发生变化时选择完全过渡。创建一个新的路由并将其命名为 paramfulltrans,然后打开 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('paramfulltrans'); }); //It specifies Router variable available to other parts of the app export default Router;
打开在 app/templates/ 下创建的文件 application.hbs,并使用以下代码
<h2>Opting Into a Full Transition</h2> {{#link-to 'paramfulltrans'}}Click Here{{/link-to}}
当您点击以上链接时,页面应该会打开一个输入框,该输入框接受用户输入的值。打开 paramfulltrans.hbs 文件,通过使用 queryParams
配置来选择完全过渡 -
//sending action to the addQuery method <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 ({ //specifying '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 the query parameters and displaying it this.set('query', this.get('queryParam')); document.write(this.get('query')); } } });
现在在路由上使用 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 服务器,您将收到以下输出 -
当您点击链接时,它将生成一个输入框,您可以在其中输入一个值并向 addQuery
方法发送一个动作 -
点击按钮后,它将在 URL 中“?”的右侧显示参数值 -
emberjs_router.htm
广告