1

我对这个软件有问题http://dev.wikidiscussion.ozfraier.stackmobapp.com

这是 todos coffeescript 示例的变体http://jasongiedymin.github.com/backbone-todojs-coffeescript/docs/coffeescript/todos.html

一个列表元素称为 Proposition,它有两个字符串数组,负数和正数。

在每个元素上找到的正负输入框中输入的字符串应保存到这些数组中,并显示在元素下。当我使用 Backbone/localstorage(对不起,如果我混淆了这些术语)作为我的数据存储时,这一切都奏效了。但是当我将它移到 Stackmob 时,它停止工作,在 POST 上生成此错误

{"error":"字段负数是不兼容的类型,请检查您的架构;它是作为 ClientDataString() 传入的"}

和 PUT 上的这个错误

{"error":"positive 的类型无效,请检查您的架构"}

我检查了我的模式是否有负面和正面,它说 array[string]

这是我保存字符串的代码:

    savepos: (el) ->
       @save (positive: @get('positive') + el)

在类 Proposition 中找到扩展 StackMob.Model

这是在 savepos 函数中调用的函数

        pushPosOnEnter: (e) ->
        if e.keyCode != 13 
           return
        Propositions.create( @newAttributesP() ) 
        @model.savepos ("<a href =\"#" + @inputp.val() + "\"><ul>" + @inputp.val() +   "</a></ul>") 
        @inputp.val('')

在 PropositionView 类中找到扩展 Backbone.View

我编写的整个代码将作为评论添加,因为我没有足够的声誉来发布 4 个链接。

4

1 回答 1

1

一个列表元素称为 Proposition,它有两个字符串数组,负数和正数。

positive数组也是如此。然后你这样做来添加另一个元素:

@save (positive: @get('positive') + el)

el这是一个字符串,@get('positive')是一个数组,array + string是另一个字符串,它解释了错误消息。

我想你想这样做:

a = _(@get('positive')).clone()
a.push(el)
@save(positive: a)

或者,如果您不介意在模型positive不知道的情况下更改模型的属性:

a = @get('positive')
a.push(el)
@save(positive: a)

请注意,它get返回对model's中某些内容的引用,attributes因此您可能希望在通过调用更改返回的数组之前克隆返回的数组push。如果您使用第二种方法,那么@attributes['positive']将被更改,push但底层的 Backbone 东西不会知道它,这对您来说可能是也可能不是问题。即使save调用应该触发所有预期的事件,我也会谨慎行事并克隆它。

于 2012-05-05T22:24:08.000 回答