0

ここに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 にデータを添付します。

http://abc.com/?firstname=Joy&lastname=Roy&age=19#browse/1

とポストバック。ただし、データを保存してアラートを表示することもあります。なぜこれが起こっているのかわかりません 誰かがなぜそのように起こっているのかを説明できますか? ?

4

1 に答える 1

0

私たちの議論の後、Nettuts は、私ができる以上に役立つと私が信じていることについて、素晴らしい 20 分間のビデオ チュートリアルを提供しました。ご覧いただき、他にご不明な点がございましたらお知らせください。彼はサーバーに Laravel を使用していますが、私が収集したところによると、問題はサーバーではなく、クライアント アプリケーションにあります。ここにビデオがあります。

于 2012-09-15T17:12:53.087 に答える