Backbone.js 样板集合视图不';不更新?

Backbone.js 样板集合视图不';不更新?,backbone.js,backbone-views,backbone-routing,Backbone.js,Backbone Views,Backbone Routing,我已经在我的网站上用yeoman generator bbb创建了一个小应用程序。问题是集合视图没有更新 以下是主要代码: app.js: 路由器.js define(function(require, exports, module) { var app = require("app"); var Music = require("modules/music"); // Defining the application router. module.expo

我已经在我的网站上用yeoman generator bbb创建了一个小应用程序。问题是集合视图没有更新

以下是主要代码: app.js:

路由器.js

define(function(require, exports, module) {

    var app = require("app");
    var Music = require("modules/music");

    // Defining the application router.
    module.exports = Backbone.Router.extend({
        initialize: function() {
            var collections = {
                musics: new Music.Collection()
            };

            _.extend(this, collections);    

            app.ui.setViews({
                ".musics": new Music.Views.List(collections)
            }).render();
        },

        routes: {
            "": "index",
            "tag/:name": "tag"
        },

        index: function() {
            this.reset();
        },

        tag: function(name) {
            this.reset();

            this.musics.tag = name;
            this.musics.fetch();
        },

        reset: function() {
            if (this.musics.length) {
                this.musics.reset();
            }
        },

        go: function() {
            return this.navigate(_.toArray(arguments).join("/"), true);
        }
    });
});
music.js:

define(function(require, exports, module) {

    // music module dependedn on app
    var app = require("app"),
        Music = module.exports = {};

    Music.Collection = Backbone.Collection.extend({

        url: function() {
            return "https://api.douban.com/v2/music/search?tag=" + encodeURIComponent(this.tag) + "&callback=?";
        },

        cache: true,

        parse: function(res) {
            if ( res.musics.length ) {
                this.status = "valid";
                return res.musics;
            }

            this.status = "invalid";
            return res;
        },

        initialize: function(models, options) {
            if (options) {
                this.tag = options.tag;
            }
        }
    });

    Music.Views = {};
    // set the list view
    Music.Views.List = Backbone.View.extend({

        template: "music/list",

        serialize: function() {
            return { collection: this.options.musics };
        },

        events: {
            "submit form": "updateMusic"
        },

        updateMusic: function() {
            app.router.go( "tag", this.$('form').find('input').val() );
            return false;
        },

        beforeRender: function() {
            this.options.musics.each(function(music) {
                this.insertView("ul", new Music.Views.Item({
                    model: music
                }));
            }, this);
        },

        afterRender: function() {
            this.$("input.invalid").focus();
        },

        initialize: function() {
            this.listenTo(this.options.musics, {
                "reset": this.render,

                "fetch": function() {
                    this.$("ul").parent().html("搜索中请稍候......");
                }
            });
        }
    });

    // set the item view
    Music.Views.Item = Backbone.View.extend({

        template: "music/item",

        tagName: "li",

        serialize: function() {
            return { model: this.model };
        },

        initialize: function() {
            this.listenTo( this.model, "change", this.render() );
        }
    });
});

看起来您正在进行跨域请求。您已经设置了
url
,以便它接受回调。现在,您不会让主干网知道这是一个
jsonp
请求

尝试将
dataType:'jsonp'
属性传递给获取请求

tag: function(name) {
        this.reset();

        this.musics.tag = name;
        this.musics.fetch({
            dataType : 'jsonp'
        });
    },
而且我也看不到您所指的视图中任何地方定义的2个方法

"reset": this.render,

this.insertView("ul", 

哦,谢谢Sushanth。我使用包含主干布局管理器的主干boilerate。insertView是api中的方法。顺便说一句,我引用了github查看器,它没有添加数据类型。。
"reset": this.render,

this.insertView("ul",