2013-05-30 2 views
3

backbone-localstorage 플러그인을 사용하여 백본 예제를 기반으로 작은 응용 프로그램을 만듭니다.백본 localstorage "url"속성 또는 기능을 지정해야합니다.

난 항상 오류가 새로운 모델에 대한 데이터를 저장할 때 "A는"URL "속성이나 기능을 지정해야합니다"

여러 시뮬 주제를 읽은 후 나는 아직도를 찾을 수 아니에요 원인.

모델 :

directory.models.EmployeeCollection = Backbone.Collection.extend({ 

    localStorage: new Backbone.LocalStorage("EmployeeCollection"), 

    model: directory.models.Employee, 

    store: directory.utils.store, 

    findByName: function(key) { 
     this.reset(this.store.findByName(key)); 
    } 

}); 

뷰 :

directory.views.newEmployeeView = Backbone.View.extend({ 

    tagName: "div", 

    initialize: function() { 
     this.template = _.template(directory.utils.templateLoader.get('new-employee')); 
    }, 

    events: { 
     "click .save": "saveEmployee" 
    }, 

    render: function(eventName) { 
     $(this.el).html(this.template(this.model.toJSON())); 
     return this; 
    }, 

    saveEmployee: function(event){ 
     this.model.set({ 
      firstName:$('#newFirstName').val(), 
      lastName:$('#newLastName').val(), 
      title:$('#newTitle').val(), 
      city:$('#newCity').val(), 
      officePhone:$('#newOfficePhone').val(), 
      cellPhone:$('#newCellPhone').val(), 
      email:$('#newEmail').val() 
     }); 

     this.model.save(); 
     window.history.back(); 

     return false; 
    } 
}); 
+0

뷰의 모델 속성이 이미 컬렉션의 멤버입니까? 보기에서 모델 속성을 설정하는 방법을 보여줄 수 있습니까? –

+0

모델이 아직 컬렉션에 없습니다. 새로운 것입니다. \t 새 인스턴스 : function() {this.slidePage (new directory.views.newEmployeeView ({model : new directory.models.Employee()}). render());} – Hazaart

+0

... 인스턴스화해야하는지 확실하지 않습니다. 컬렉션 및 이것을 수행 할 위치는 무엇입니까? – Hazaart

답변

3

나는 당신이 그것을 유지하기 전에 당신이 컬렉션의 구성원이어야하는 새로운 모델을 필요가 있다고 생각합니다. 이 같은 컬렉션의 새로운 인스턴스를 생성하고 (아마 라우터에) 뷰에 전달하십시오 :

new newEmployeeView({ collection: new EmployeeCollection() }); 

을보기에 당신의 새로운 인스턴스를 추가하는 백본의 생성 편리한 메소드 (docs 참조)를 사용할 수 있습니다 컬렉션의 모델을 다음과 같이 유지하십시오.

this.collection.create({ 
    firstName:$('#newFirstName').val(), 
    lastName:$('#newLastName').val(), 
    title:$('#newTitle').val(), 
    city:$('#newCity').val(), 
    officePhone:$('#newOfficePhone').val(), 
    cellPhone:$('#newCellPhone').val(), 
    email:$('#newEmail').val() 
}); 
+0

Ive가 다중 구문을 시도했습니다. 항상 backbone.localstorage.js에서 다음 오류가 발생합니다 : 정의되지 않은 '지연됨'속성을 읽을 수 없습니다. Backbone.LocalStorage.sync 메서드에서 – Hazaart

+0

시작한 오류와 다른 오류입니다. 어딘가에있을 가능성이 있습니다.). 현재 문제를 재현하고 http://jsfiddle.net에 게시하는 데 필요한 가장 간단한 예제를 만들 수 있습니까? –

+0

jsfiddle에 너무 많은 라이브러리를 사용하고 있습니다.데모를 정교하게 만드는 대신 백본을 더 잘 이해하기 위해 처음부터 새로운 응용 프로그램을 만들 계획입니다. 나의 원래 문제가 해결 된 이후 나는 당신의 대답을 받아 들였습니다. 양해 해 주셔서 감사합니다. – Hazaart

관련 문제