我创建了具有 2 类用户 admin,user 的 mywebsite。所以,我创建了 3pages mainpag.html, admin.html,user.html。并为它们中的每一个单独的模型、视图、集合、routers.js 文件。因此,登录后,当我发送到具有不同模型的单独 html 页面时,我无法自动获取用户模型。所以我确实喜欢这样:
首先,我对服务器进行了ajax调用,询问_id(会话中的用户名,所以我可以获得id)
从 id 中,我通过 model.fetch() 获取了模型,然后我得到了具有所有属性的用户模型。
然后在 fetch 的成功回调中,我做了 model.save({weight : "somevalue"}) 。根据我的说法,它应该正确更新,因为模型已经可用,该属性权重也可以使用一些旧值,但它正在发送 POST 请求,当我尝试 model.isNew() 时,它也返回了 true 。我哪里错了?我怎样才能更新我的模型?如果需要,我会发布更多详细信息。
更多细节 :
如果我删除该保存方法,那么我将在模型中获得正确的属性。
如果我不删除该保存方法,则成功和错误回调也将作为模型中的属性出现。
代码 :
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,也不要着急,你可以很容易理解,那些#的意思是注释。这里我们使用缩进而不是大括号。
还有一个疑问,模型的 url 必须根据需求动态更改,对吗?实现这一目标的最佳方法是什么?我这样做:
我正在填充“数组”,其中包含应该出现在 url 中的必填字段。在模型的 init func 中,我使用 @arr=arr,thenin url 的函数,我像这样检查。
url : ->
if @arr['id']
"/user/#{@id}"
我的方法是正确的,还是有更好的方法来动态设置 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
谢谢