如何在beforeModel中使用Ember查询参数并选择?

时间:2015-05-12 07:05:30

标签: javascript ember.js handlebars.js

演示:http://jsbin.com/zexopa/1/edit?html,js,output

我在我的应用程序中使用查询参数。 queryParameters'name''category'

'name'参数在select中使用,'category'使用输入,但如果我将其设置为null,则select 'name'有问题。

如果我更改'name',则网址中的'name'始终未定义。

路线:

App.IndexRoute = Ember.Route.extend({
  beforeModel: function() {
    this.controllerFor('index').set('products', [1,2,3]);
  },
  model: function() {
    return [{'is_active':false, 'name':'One'}, {'is_active':false, 'name':'Two'}, {'is_active':false, 'name':'Three'}, {'is_active':false, 'name':'Four'},{'is_active':false, 'name':'Five'}];
  },
  actions: {
    queryParamsDidChange: function() {
      this.refresh();
    }
  }
});

控制器:

App.IndexController = Ember.Controller.extend({
  queryParams: ['name', 'category'],
  name: null,
  category: null
});

模板:

<script type="text/x-handlebars">
  <h2>Welcome to Ember.js</h2>

  {{outlet}}
</script>

<script type="text/x-handlebars" data-template-name="index">
  {{view "select" content=products value=name prompt="all"}}
  {{input type="text" value=category class="form-control"}}
  <ul>
    {{#each model as |item|}}
      <li>{{item.name}}</li>
    {{/each}}
  </ul>
</script>

您能帮忙检查一下我的申请会发生什么变化吗?

1 个答案:

答案 0 :(得分:0)

查询参数必须是字符串才能正确绑定。您的输入有效,因为值为String对象。在name数组中,您提供了Integer。不幸的是,我在文档中没有找到任何关于它的提及,但你可以在这里看到一个有效的演示:http://jsbin.com/lixili/1/edit?html,js,output

如果我能就您的代码提供一些提示:

  • beforeModel不是设置控制器属性的地方,在setupController方法中执行,如在提供的JSBin中
  • 您没有在路线中定义查询参数,但您可以摆脱queryParamsDidChange

希望我帮忙!