2011-08-01 6 views

답변

0
myModel = new Model id:'model1' 

$.ajax '/urlWhereUWantToSaveModel', 
    type: 'POST' 
    data: myModel.toJSON() 
    dataType: 'json' 
    success: (response) -> 
    // Server response should be json object with an error property if something went wrong 
    if response.error 
     console.log 'save failed' 
    else 
     console.log 'save succeeded' 
    error: -> 
    console.log 'error' 
+0

감사합니다. 매우 도움이되었습니다. – user737688

+1

이것은 CoffeeScript 코드이며 JavaScript가 아닙니다 (아직) –

3

, 일반 Sync을 사용하는 대신 수집 및 모델에 명시 적으로 AJAX를 호출하는 것이 좋습니다. 더 많은 유연성을 제공합니다. 해야 할 일 목록에있는 작업 모음에 대해 Planbox에서 수행하는 작업은 다음과 같습니다. 우리는 서버를 가정

 
    TaskCollection = Backbone.Collection.extend({ 
    // Get all existing tasks from the server 
    fetch: function(options) { 
     var collection = this; 
     // Remove references to callbacks so that calls further down 
     // don't trigger them again! 
     var onsuccess = options.success; if (options.success) delete options.success; 
     var onerror = options.error; if (options.error) delete options.error; 
     $.ajax({ 
     url: '/get_tasks', 
     type: 'GET', 
     dataType: 'json', 
     success: function(object, status) { 
      collection.refresh(collection.parse(object)); 
      if (onsuccess) onsuccess(collection, object); 
     }, 
     error: function(xhr, status, error) { 
      if (onerror) onerror(collection, xhr.responseText); 
     } 
    } 
    }); 

    TaskModel = Backbone.Model.extend({ 
    // Save a task on the server 
    save: function(options) { 
     var model = this; 
     $.ajax({ 
     url: '/save_task', 
     type: 'POST', 
     dataType: 'json', 
     data: model.toJSON(), 
     success: function(object, status) { 
      if (options.success) options.success(model, object); 
     }, 
     error: function(xhr, status, error) { 
      if (options.error) options.error(model, object.content); 
     } 
    } 
    }); 

    var tasks = new TaskCollection(); 
    tasks.fetch(); 

참고 각 작업 개체에 대한 unqiue id 속성을 뱉는 다. 백본은이를 사용하여 모델을 식별합니다. 그래서 당신은 ID 12

으로 작업을 검색 할 수 tasks.get(12)처럼 뭔가를 할 수 있으며, Planbox 우리가 save_statusmove 같은 모델 save 기능의 풍부한 세트를 가지고 있습니다. 이를 통해 유효성 검사 및 업데이트와 같은 사전 및 사후 처리 기능을 추가 할 수 있습니다.

또한 우리는 일반 Backbone Collection 및 Model 객체를 확장하여 위의 가져 오기 및 저장 함수를 캡슐화했습니다.