视图内部的模型渲染:toJSON不是一个函数

时间:2015-11-07 23:23:37

标签: javascript backbone.js view model

我在视图中添加了一个模型attribut:

 app.ActorView = Backbone.View.extend({

        modelImg:'', ....

我跳到渲染部分,因为其他一切都没问题:

 render: function () {this.$el.html(this.template({
                modImg: this.modelImg.toJSON(),
                mod: this.model.toJSON(),
                movies: this.collection.toJSON()}

视图中的每个模型(model,collection和modelimg)都在项目的rooter部分中正确获取:

 modActor.fetch().done(function () {
                modActorMovies.fetch().done(function () {
                    modImgActor.fetch().done(function () {
                        var actorView = new app.ActorView({

                        modelImg: modImgActor,<--problematic model
                            model: modActor,
                            collection: modActorMovies
                        });

我的modImgActor定义如下:

    app.ActorImg= Backbone.Model.extend({
        url: "http://umovie.herokuapp.com/unsecure/actors/272994458/movies",

        parse: function (response) {
            return response.results[0];
        }
    });

问题是我在modelImg上使用toJson()函数。存在以下错误:this.modelImg.toJSON不是函数

可以用它的url定义模型吗?

1 个答案:

答案 0 :(得分:0)

modImg不是Backbone.View的标准选项。所以骨干就会忽略它。

您必须手动处理随选项传递的自定义属性。

所以你的视图定义应该是

app.ActorView = Backbone.View.extend({
  initialize: function(options){
      this.modelImg = options.modelImg;
   }
}):