路由器将控制器的属性映射到不同的查询参数键

控制器具有默认查询参数属性,该属性将查询参数键附加到它并将控制器属性映射到不同的查询参数键。

语法

Ember.Controller.extend ({
   queryParams: {
      queryParamName: "Values"
   },
   queryParamName: null
});

示例

下面给出的示例显示了将控制器的属性映射到不同的查询参数键。创建一个新路由并将其命名为 parammapcontrol,然后打开 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('parammapcontrol');
});

//它指定可供应用程序其他部分使用的路由器变量
export default Router;

使用以下代码打开在 app/templates/ 下创建的文件 application.hbs 文件 −

<h2>Map a Controller's Property</h2>
{{#link-to 'parammapcontrol'}}Click Here{{/link-to}}

单击上述链接时,页面应打开一个输入框,该输入框接受用户输入的值。打开 parammapcontrol.hbs 文件并添加以下代码 −

//将操作发送到 addQuery 方法
<form {{action "addQuery" on = "submit"}}>
   {{input value = queryParam}}
   <input type = "submit" value = "Send Value"/>
</form>
{{outlet}}

现在使用以下代码打开在 app/controllers/ 下创建的 parammapcontrol.js 文件 −

import Ember from 'ember';

export default Ember.Controller.extend ({
   queryParams: [{
      
      //映射"query"查询参数的字符串"querystring"
      query: "querystring"
   }],
   
   //最初查询的"查询参数"将为空
   query: null,
   queryParam: Ember.computed.oneWay('query'),
   actions: {
      
      addQuery: function () {
         this.set('query', this.get('queryParam'));
         document.write(this.get('query'));
      }
   }
});

输出

运行 ember 服务器,您将收到以下输出 −

Ember.js Router Map Controllers Property

单击链接时,将生成一个输入框,您可以在其中输入值。这将向 addQuery 方法发送一个操作 −

Ember.js Router Map Controllers Property

单击按钮后,它将在 URL 中"?"右侧显示参数值 −

Ember.js Router Map Controllers Property

emberjs_router.html