2

我是 Backbone 的新手,将模型保存到数据库时遇到问题。单击时,“个人资料”字段应更新为“100”,但它不起作用:

$->

class User extends Backbone.Model
    url: -> '/users/' + this.get("id")  '.json'

class Users extends Backbone.Collection
    model: User

class UserView extends Backbone.View
    tagName: "li"
    events:
        "click" : "changeProfile"

    render: -> $(@el).html( @model.get "name" )
    changeProfile: -> 
        $('li').removeClass('selected')
        $(@el).addClass('selected')
        @model.set( 'profile' : '100' ).save()

users = new Users
users.url = "/users.json"
users.fetch(
    success: ->
        _.each users.models, (model) ->
            view = new UserView( model: model )
            $('ul').append view.render()
)

'users' 控制器/'user' 模型被搭建(并且控制器以 json 格式呈现)。我正在使用 Backbone 和 Rails 的最新版本。有人可以帮忙吗?

(Chrome 中的 Javascript 控制台注册以下错误:“Uncaught TypeError: number is not a function”)

4

1 回答 1

0

url的 forUser缺少一个+

class User extends Backbone.Model
    url: -> '/users/' + this.get("id")  '.json'
    #---------------------------------^^

最后一部分是这样解释的:

this.get("id")('.json')

并且由于get('id')返回一个数字,因此您会收到“数字不是函数”错误。添加缺失+以获取字符串连接或使用 CoffeeScript 的插值:

url: -> '/users/' + this.get('id') + '.json'

或者

url: -> "/users/#{this.get('id')}.json"
于 2012-12-06T06:13:15.903 回答