admin、user の 2 種類のユーザーを持つ mywebsite を作成しました。だから、私は3ページのmainpag.html、admin.html、user.htmlを作成しました。そして、それぞれのモデル、ビュー、コレクション、routers.js ファイルを分けます。そのため、ログイン後、モデルの異なる別のhtmlページに送信しているため、ユーザーモデルを自動的に取得できません。だから私はこれが好きでした:
まず、サーバーへの ajax 呼び出しを行い、_id を要求しました (セッションのユーザー名なので、id を取得できます)
ID から、model.fetch() によってモデルを取得し、すべての属性を持つユーザーモデルを取得しました。
次に、 fetch の成功コールバックで、 model.save({weight : "somevalue"}) を実行しました。私によると、モデルはすでに利用可能であるため、属性の重みも古い値で利用可能であるため、正しく更新する必要がありますが、model.isNew() を試したときに POST リクエストを送信しています。どこが間違っていますか?モデルを更新するにはどうすればよいですか? 必要に応じて詳細を投稿します。
詳細:
その保存メソッドを削除すると、モデルで正しい属性が取得されます。
その保存メソッドを削除しないと、成功とエラーのコールバックもモデルの属性として表示されます。
コード :
addWeight : (e)->
arr=new Array()
arr['_id']=app._id
console.log "asdasd"
console.log arr
console.log arr['_id']
@user_model =new UserModel(arr)
@user_model.fetch({
success : (model,res,options) =>
console.log model
console.log res
arr=new Array()
arr['_id']=e.target.id
#arr['action']='weight' #means , update weight
#@user_model.setArr(arr)
#@user_model.set({weight : arr['_id']})
console.log "new : "+@user_model.isNew()
@user_model.save({weight : e.target.id})
#@user_model.save({
# success : (model,res,options) =>
# console.log "model updated: "+JSON.stringify(model)
# console.log "Res : "+JSON.stringify(res)
# error : (model,res,options) =>
# console.log "Error : "+JSON.stringify(res)
#})
error : (model,res,options) =>
console.log "Error "
})
上記のコードはcoffeescriptで書かれているので、coffeescriptを知らなくても安心して簡単に理解できますし、#の意味はコメントです。ここでは中かっこの代わりにインデントに従います。
もう 1 つ疑問があります。モデルの URL は要件に応じて動的に変更する必要があります。それを達成するための最良の方法は何ですか? 私はこのようにやっています:
url に存在する必要がある必須フィールドを含む「配列」を入力しています。モデルの init func では、@arr=arr,thenin url の関数を使用しています。このようにチェックします。
url : ->
if @arr['id']
"/user/#{@id}"
私のアプローチは正しいですか、またはURLを動的に設定するためのより良いアプローチがあります。または、次のようにURLを直接設定できますか:
@user_model.setUrl "/someurl/someid" //this setUrl method is available in model's definition
@user_model.fetch() or save() or watever that needs url
ありがとう