1

このソフトウェアに問題がありますhttp://dev.wikidiscussion.ozfraier.stackmobapp.com

これは todos coffeescript の例http://jasongiedymin.github.com/backbone-todojs-coffeescript/docs/coffeescript/todos.htmlのバリエーションです

リスト要素は命題と呼ばれ、負と正の 2 つの文字列配列を持ちます。

入力ボックスに入力された各要素の正と負の文字列は、これらの配列に保存され、要素の下に表示されます。これは、データストアとして Backbone/localstorage (用語を混同していたらすみません) を使用したときにすべて機能しました。しかし、それを Stackmob に移動すると、動作が停止し、POST でこのエラーが生成されました

{"エラー":"負のフィールドは互換性のない型です。スキーマを確認してください。ClientDataString() として渡されました"}

そしてPUTのこのエラー

{"エラー":"正の型が無効です。スキーマを確認してください"}

スキーマをネガティブとポジティブでチェックしたところ、配列[文字列]と表示されました

これは、文字列を保存するための私のコードです:

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

クラス Proposition extends 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

リスト要素は命題と呼ばれ、負と正の 2 つの文字列配列を持ちます。

配列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何かへの参照を返すので、 を呼び出して変更する前に、返された配列のクローンを作成することをお勧めします。2 番目のアプローチを使用すると、によって変更されますが、基になるバックボーンはそれを認識しないため、問題になる場合とそうでない場合があります。呼び出しが予想されるすべてのイベントをトリガーする必要がある場合でも、注意を怠ってクローンを作成します。modelattributespush@attributes['positive']pushsave

于 2012-05-05T22:24:08.000 に答える