グーグルの量が私の混乱を解決することに成功していないので、私はここで質問をしたいと思いました。
モデルを保存して、成功/エラーのコールバックを利用しようとしています。バックボーンのドキュメントには、次のようにモデルを保存すると記載されていますmodel.save([attributes], [options])
。
モデル全体を保存する方法(つまり、属性を指定せずに)を説明しているドキュメントのどこにも見つかりませんが、2番目の答えがモデル全体を保存するように指示しているこの質問に出くわしましたmodel.save({}, [options])
。
しかし、私はこれを無駄にしようとしています。私のコードは以下の通りです:
バックボーンモデル:
class Student extends Backbone.Model
url: ->
'/students' + (if @isNew() then '' else '/' + @id)
validation:
first_name:
required: true
last_name:
required: true
email:
required: true
pattern: 'email'
schema: ->
first_name:
type: "Text"
title: "First Name"
last_name:
type: "Text"
title: "Last Name"
email:
type: "Text"
title: "Email"
私の見解では、私は次の機能を持っています:
class Students extends CPP.Views.Base
...
saveModel = ->
console.log "model before", @model.validate()
console.log "model attrs", @model.attributes
@model.save {},
wait: true
success: (model, response) ->
notify "success", "Updated Profile"
error: (model, response) =>
console.log "model after", @model.validate()
console.log "model after is valid", @model.isValid()
console.log "response", response
notify "error", "Couldn't Update"
保存前の最初のconsole.logで、undefined
応答によってモデルが有効であると言われています。実際にモデルを見ると、3つのフィールドすべてが入力されていることがわかります。
同様に、次の2つのコンソールでエラーが記録され、@model.validate()
両方がそれぞれとを@model.isValid()
返します。ただし、モデルを保存しようとしたときに得られる応答は次のとおりです。undefined
true
Object {first_name: "First name is required", last_name: "Last name is required", email: "Email is required"}
最後に、私が取得したモデル属性のconsole.logで:
Object
created_at: "2012-12-29 23:14:54"
email: "email@email.com"
first_name: "John"
id: 2
last_name: "Doe"
type: "Student"
updated_at: "2012-12-30 09:25:01"
__proto__: Object
これにより、モデルに渡したときに{}
、実際には属性をnilとして保存しようとしていたと思います。そうでない場合、他にエラーが発生したのはなぜですか。
誰かが私が間違っていることを親切に指摘できますか?各属性を個別に保存に渡す必要はありません。
前もって感謝します