ここにbackbone.jsモデルがあります
define ['jquery','underscore','backbone'] , ($,_,Backbone) ->
class Student extends Backbone.Model
idAttribute : "UserKey"
urlRoot : "Api/Student"
defaults:
UserKey: null
FirstName : ""
LastName : ""
Username : ""
Password : ""
Age : 18
initialize : ->
#console.log "You have been initialized"
そして、ここにコントローラーがあることを見てみましょう: -
public class HomeController : Controller
{
private Repository<Student, PortalContext> repo;
public HomeController()
{
repo = new Repository<Student, PortalContext>(new PortalContext());
}
[HttpGet]
public ActionResult All()
{
IList<Student> studs = repo.GetAll().ToList<Student>();
return this.Json(new { Students=studs }, JsonRequestBehavior.AllowGet);
}
[HttpGet]
public JsonResult Get(int id)
{
Student student = repo.FindBy(x => x.UserKey ==id).Select(x=>x).SingleOrDefault<Student>();
return this.Json(student,JsonRequestBehavior.AllowGet);
}
[HttpPut, ActionName("Student")]
public ActionResult Update(Student student)
{
repo.Edit(student);
repo.Save();
return Json(student);
}
}
そして、これがモデルを保存している View.Coffee ファイルです。
define ['jquery'
,'underscore'
,'backbone'
,'text!/Templates/Student/View.htm'] , ($ , _ , Backbone , ViewTemplate) ->
class StdView extends Backbone.View
_.templateSettings = { interpolate: /\{\{(.+?)\}\}/g };
template : _.template(ViewTemplate)
events : ->
"click #back":"Back"
"click #save" : "Save"
Save : ->
console.log "tryng to save"
@model.save
'FirstName' : @$el.find("#txtFirstName").val()
'LastName' : @$el.find("#txtLastName").val()
'Age': @$el.find("#txtAge").val()
,
wait:true
success: =>
alert "Saved"
@
Back: (e)->
window.history.back()
false
initialize : (options) ->
@render()
render :->
#console.log "this is details"
@setElement @template @model.toJSON()
@
モデルを保存することもありますが、サーバーにポストバックすることもあります。つまり、バックボーンはデータを保存せず、このようにブラウザの URL にデータを添付します。
とポストバック。ただし、データを保存してアラートを表示することもあります。なぜこれが起こっているのかわかりません 誰かがなぜそのように起こっているのかを説明できますか? ?