2012-07-14 73 views
0

这是一个功能:model.toJSON是不使用骨干

@model 

返回:

Object { type="conjugation", verb="ser", yo="soy", more...} 

但是当我尝试:

@model.toJSON() 

我得到:

TypeError: this.model.toJSON is not a function 

我想最终完成这一行:

$(@el).html(@template(@model.toJSON())) 

所以,我可以在我的模板展会呈现此对象。

有什么建议吗?

更新

Persuant的意见。我有这个模型,但我现在可以看到他们是如何不相关的。

class AiProject.Models.Verb extends Backbone.Model 
    paramRoot: 'verb' 

我打算尝试实例化这种类型的动词。

class AiProject.Routers.QuestionsRouter extends Backbone.Router 
    initialize: (options) -> 
    @verb = new AiProject.Models.Verb 
    @verb = options.words 

然后回我的看法:

class AiProject.Views.Questions.ConjugationView extends Backbone.View 
    template: JST["backbone/templates/questions/conjugation"] 

render: -> 
    $(@el).html(@template(@model.toJSON())) 

不过尽管得到了同样的错误..

+1

你的'@ model' ['extend'](http://backbonejs.org/#Model-extend)['Backbone.Model'](http://backbonejs.org/#Model)? – MilkyWayJoe 2012-07-14 15:51:38

+0

您的模型不是骨干模型,而是一个普通的javascript对象。 – Yaroslav 2012-07-14 15:52:34

+0

@Yaroslav是的,这就是我所认为的 – MilkyWayJoe 2012-07-14 15:53:35

回答

2

它看起来就像你在第一次正确设置你的模型,然后用它覆盖值为options.words

取而代之的是:

class AiProject.Routers.QuestionsRouter extends Backbone.Router 
    initialize: (options) -> 
    @verb = new AiProject.Models.Verb 
    @verb = options.words 

试试这个:

class AiProject.Routers.QuestionsRouter extends Backbone.Router 
    initialize: (options) -> 
    @verb = new AiProject.Models.Verb(options.words) 

这创造你的模型,并通过在options.words被设置为模型的属性。

+0

啊非常感谢凯文!语法越来越清晰。这工作perfffffectly。非常感谢你 – Trip 2012-07-15 00:13:08

+0

当然,很乐意提供帮助。 – 2012-07-15 01:48:48