根据路由URL设置select值

时间:2012-07-22 12:23:45

标签: javascript backbone.js

在我的骨干应用程序中,我有一个选择菜单,使用路径过滤列表中的一些员工,它由部门完成。

E.g。 localhost / #filter / HR 或      的本地主机/#滤波器/会计

routes: {
    "filter/:type": "urlFilter"
},

urlFilter: function (type) {     
    this.directory.filterType = type;
    this.directory.trigger("change:filterType");
},

然后在我看来:

filterByType: function () {
    if (this.filterType === "all") {
        this.collection.reset(contacts);
        app.navigate("filter/all");
    } else {
        this.collection.reset(contacts, { silent: true });

        var filterType = this.filterType,
            filtered = _.filter(this.collection.models, function (item) {
                return item.get("type").toLowerCase() === filterType;
            });

        this.collection.reset(filtered);

        app.navigate("filter/" + filterType);
    }
},  

但是,如果您直接访问其中一个网址,则选择菜单会不同步。

如何使选择与路线保持同步,其中选项值等于全部,人力资源和会计?

1 个答案:

答案 0 :(得分:0)

将onchange处理程序放到列表中,并相应地更新URL(通过添加当前列表项的参数值)。更改网址时防止重新加载页面(google for it)。使用参数(即页面加载时)打开URL时,请确保更新当前列表项。