单击按钮时刷新模型

时间:2015-05-21 16:22:28

标签: javascript ember.js

我想知道如何使用来自不同控制器的参数刷新模型。基本上我想基于参数刷新列表模型。参数" readstatus"实际上是" Filter"的价值在FilterbuttonController中。

当您点击li时,模型应该刷新。我知道它看起来并不正确,但这就是应用程序现在的工作方式,我必须找到一种方法。有什么建议?代码如下。谢谢。

我有一个模特:

App.ListRoute = Ember.Route.extend({

    model: function(readStatus){
        return this.store.find('list', { status : readStatus});
}

我有一个模板:

<script type="text/x-handlebars" data-template-name="filterbutton">      
    <div class="filter-dropdown dd">
        <button class="filter" {{ action 'toggleDd'}}><span id="current_text">{{ filter }}</span> &#xf107;</button> 
        {{#if ddVisible}}        
            <ul class="dropdowns">
                <li {{ action 'filterConversations' 'All'}}></li>
                <li {{ action 'filterConversations' 'Opened'}}><</li>
                <li {{ action 'filterConversations' 'Closed'}}></li>
                <li {{ action 'filterConversations' 'Unread'}}></li>
                <li {{ action 'filterConversations' 'Read'}}></li>
            </ul>
        {{/if}}
    </div>
</script>

此模板与以下控制器关联:

App.FilterbuttonController = Ember.Controller.extend({

    ddVisible: false,
    filter: "Filter",

    actions: {

        toggleDd: function(){
            if (this.ddVisible){
                this.set('ddVisible', false);   
            }
            else{
                this.set('ddVisible', true)
            }
        },

        filterConversations: function(chosenFilter){
            this.send('toggleDd');
            this.set('filter', chosenFilter);

            **//This is where the refreshing should be with the value of filter**

        }           
    }
});

1 个答案:

答案 0 :(得分:0)

this.refresh();

应该是刷新所需的全部内容。

export default Ember.Route.extend({
  queryParams: {
    SOME_PARAM: {
      refreshModel: true
    }
  },
  model: function(params){
    console.log(params.SOME_PARAM);
  }
});

也可以添加到路由以指示查询参数是相关的,并且应该在查询参数更改时刷新。所以我想你可以改变你的查询参数,模型会以这种方式自动刷新。

http://guides.emberjs.com/v1.10.0/routing/query-params/