เหตุการณ์การเปลี่ยนแปลง Backbone.js ไม่เริ่มทำงาน

ฉันมีกล่องเลือกหลายกล่องแต่ละกล่องมีคลาสเป็น browse_select ฉันต้องการเริ่มการทำงานของฟังก์ชัน render ทุกครั้งที่มีการเปลี่ยนแปลงตัวเลือกจากกล่องเลือกเหล่านั้น แต่ไม่ได้เริ่มการทำงานของฟังก์ชันนี้

$(function(){
    var Users = Backbone.Collection.extend({
        url: "/app/phpscripts/services/browse_users/?"
    });

    var UserView = Backbone.View.extend({
        el: '.list_ctn ul',
        tagName: 'li',

        events: {
            "change .browse_select" : "render"
        },

        render: function(){
            console.log("render");
            var users = new Users();
            var that = this;
            users.fetch({
                success: function(){
                    var template = _.template($('#myUserTemp').html(),{users: users.models});
                    that.$el.html(template);
                }
            });
        }
    });

    var userView = new UserView();
    userView.render();
});

comment
เหตุการณ์การดูถูกกำหนดขอบเขตไว้ที่มุมมอง กล่องเลือกของคุณเป็นส่วนหนึ่งของ UserView หรือไม่   -  person chridam    schedule 16.12.2013
comment
ไม่มีกล่องเลือกส่วนหนึ่งของหน้าต่างนี้ แต่ไม่ใช่ UserView จริงๆแล้วฉันไม่รู้ข้อมูลพื้นฐานสำหรับกิจกรรมการดูที่กำหนดขอบเขตในตัวเอง   -  person Mesuti    schedule 16.12.2013
comment
คำตอบนี้อาจมีประโยชน์   -  person chridam    schedule 16.12.2013
comment
คุณสามารถเพิ่มโค้ดเทมเพลตของคุณได้หรือไม่?   -  person Ian Jamieson    schedule 19.12.2013


คำตอบ (1)


ตรวจสอบอีกครั้งว่าช่องที่เลือกอยู่ใน #myUserTemp

นอกจากนี้ คุณอาจต้องการวางตรรกะ user.fetch ไว้นอกมุมมองนั้น เนื่องจากเป็นส่วนหนึ่งของการโทรกลับ ฉันไม่แน่ใจว่าสามารถตั้งค่าผู้ฟังเหตุการณ์ได้อย่างถูกต้องเนื่องจากโฟลว์ของคุณหรือไม่

ฉันขอแนะนำให้คุณเรียกการดึงข้อมูลจากภายนอกมุมมอง จากนั้นเมื่อการดึงข้อมูลสำเร็จให้เริ่มต้น UserView ใหม่และส่งผ่านคอลเลกชัน ที่ช่วยให้คุณตั้งค่า _.template() ด้วยวิธีมาตรฐานเช่นเดียวกับคุณสมบัติมุมมอง

person Xerri    schedule 20.12.2013