这个软件http://dev.wikidiscussion.ozfraier.stackmobapp.com有问题
它是Todos咖啡脚本示例http://jasongiedymin.github.com/backbone-todojs-coffeescript/docs/coffeescript/todos.html的变体
一个列表元素叫做Proposition,它有两个字符串数组,一个是负数,一个是正数。
在输入框中输入的字符串,在每个元素中找到的正数和负数,应该保存到这些数组中,并显示在元素下。当我使用Backbone/localstorage(抱歉,如果我混淆了术语)作为我的数据存储时,这一切都工作正常。但是当我将它移动到Stackmob时,它停止工作,在POST中产生了这个错误
{“error”:“字段negative是不兼容的类型,请检查您的架构;它是作为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.js 视图
我写的整个代码,我将添加为一个评论,因为我没有足够的声誉后4个链接。
1条答案
按热度按时间ego6inou1#
一个列表元素叫做Proposition,它有两个字符串数组,一个是负数,一个是正数。
所以
positive
是一个数组。然后你这样做来添加另一个元素:这里的
el
是一个字符串,@get('positive')
是一个数组,array + string
是另一个字符串,它解释了错误消息。我想你要这样做:
或者,如果您不介意在模型不知道的情况下修改模型的
positive
属性:注意
get
返回一个对model
的attributes
的引用,所以在调用push
改变数组之前,你可能需要克隆返回的数组。如果你使用第二种方法,那么@attributes['positive']
将被push
更改,但底层的Backbone组件不会知道这一点,这对您来说可能是个问题,也可能不是。即使save
调用应该触发所有预期的事件,我还是会谨慎地克隆它。