路由器默认值和反序列化
您可以为控制器查询参数属性设置默认值,该值不会序列化到 URL 中。
语法
Ember.ArrayController.extend ({
queryParams: 'queryParameterName',
queryParameterName: defaultValue
});
示例
下面给出的示例指定将默认值设置为查询参数。创建一个新路由并将其命名为 defaultvaluedeserialize,然后打开 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('defaultvaluedeserialize');
});
//它指定可供应用程序其他部分使用的 Router 变量
export default Router;
使用以下代码打开在 app/templates/ 下创建的文件 application.hbs 文件 −
<h2>Default Values and Deserialization</h2>
{{#link-to 'defaultvaluedeserialize'}}Click Here{{/link-to}}
单击上述链接时,页面应打开一个输入框,该输入框接受用户输入的值。打开 defaultvaluedeserialize.hbs 文件并添加以下代码 −
//将操作发送到 addQuery 方法
<form {{action "addQuery" on = "submit"}}>
{{input value = queryParam}}
<input type = "submit" value = "Send Value"/>
</form>
{{outlet}}
现在使用以下代码打开在 app/controllers/ 下创建的 defaultvaluedeserialize.js 文件 −
import Ember from 'ember';
export default Ember.Controller.extend ({
//将查询参数名称指定为"query"
queryParams: 'query',
//将查询参数指定为默认值 1
query: 1,
queryParam: Ember.computed.oneWay('query'),
actions: {
addQuery: function () {
this.set('query', this.get('queryParam'));
document.write(this.get('query'));
}
}
});
输出
运行 ember 服务器,您将收到以下输出 −
点击链接时,在输入框中显示指定的默认值 −
点击按钮后,会显示默认值,不会序列化到URL中 −

emberjs_router.html