backbone.js - 如何使所选项目更改类(如何使属性在主干中可观察)

标签 backbone.js

我想构建简单的屏幕,其中一侧是项目列表,另一侧是所选项目的详细信息。当用户单击其中一项时 - 其详细信息显示在“详细信息”部分。 此外,“列表”部分中的选定项目必须用“事件”类修饰。 这是我的路由器代码:

var AppRouter = Backbone.Router.extend({

routes:{
    "":"list",
    "users/:id":"userDetails"
},
list:function () {

    this.usersList = new UsersCollection(usersList);/* new UsersCollection()*/
    var self = this;


    //this.userList.fetch({
       // success: function () {
           this.UsersListView =   new UsersListView({ model: this.usersList });
           $('#sidebar').html(this.UsersListView.render().el);
       // }
    //})//end of fetch


},
userDetails:function (id) {

    if(this.usersList){
        //unselect prevously selected
        if(this.user )this.user.set({'selected':false});

        this.user = this.usersList.get(id);

        //select current
        this.user.set({'selected':true});
        //empty refill the items section
        this.UsersListView =   new UsersListView({ model: this.usersList });
        $('#sidebar').empty().html(this.UsersListView.render().el);


        if (this.UserDetailsView) this.UserDetailsView.close();
        this.UserDetailsView = new UserDetailsView({model:this.user});

        $('#content').html(this.UserDetailsView.render().el);
    }
    else{

    }
}
});

到目前为止,我设法通过清空并重新填充项目部分 html 来设置“事件”项目类。 有没有什么方法可以观察(就像在knockoutjs中)“selected”属性,因此一旦它发生变化 - 更改将在html中可见?

查看代码:

window.UserListItemView = Backbone.View.extend({
    tagName:"li",

    template:_.template($('#tpl-user-list-item').html()),

    render:function (eventName) {
        if(this.model.get('selected')){$(this.el).addClass('active');}
        $(this.el).html(this.template(this.model.toJSON()));

        return this;
    }
});

感谢转发

最佳答案

This就是您正在寻找的(尤其是 Events#listenTo 方法)。
所以;在您看来:

initialize: function() {
  // listen to your model
  this.listenTo(this.model, 'change:selected', this.updateClass);
},
updateClass: function() {
  // something like...
  this.$el.toggleClass('active');
}

关于backbone.js - 如何使所选项目更改类(如何使属性在主干中可观察),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15896874/

相关文章:

javascript - 主干 View 多次触发事件委托(delegate)

javascript - 'self = this' vs 应用或绑定(bind)? ( Backbone )

javascript - Backbone.js - 如何创建具有可绑定(bind)属性的集合

javascript - View 渲染 - backbone.js

javascript - 主干restful api服务器返回

javascript - 在 backbone.js 中添加 access_token

jquery - 是否可以停止 Backbone "read"请求

javascript - 内联 require() 在 requirejs 中工作但不适用于优化的杏仁构建

Javascript 将对象传递给函数原型(prototype)?

javascript - 用于显示异步请求状态的 GUI 组件