2014-12-16 1 views
0

모델을 엠버의 템플릿 컨트롤에 바인딩하려고하는데 성공하지 못했습니다. 먼저 모델을 만든 다음 모델을 컨트롤에 바인딩하려고합니다. 나는 var newCar = sapp.Car.create(); 명령으로 차를 만들고있다. 하지만 오류가 발생했습니다템플릿을 컨트롤에 바인딩하기

EmberError: You should not call `create` on a model. Instead, call `store.createRecord` with the attributes you would like to set. 

제 질문은 어떻게 모델을 만들고 템플릿 컨트롤에 바인딩 할 수 있습니까? 아래 코드 샘플은 내가 달성하려는 방식입니다.

예 :

window.sapp = Ember.Application.create(); 
sapp.Router.map(function() { 
    this.route("cars"); 
}); 
sapp.Car = DS.Model.extend({ 
    plateNumber: DS.attr('string'), 
    color: DS.attr('string'), 
    brand: DS.attr('string') 
}); 

컨트롤러

sapp.CarsController = Ember.Controller.extend({ 
      var newCar = sapp.Car.create(); 
      //getting error while creating car 
      //error:mberError: You should not call `create` on a model. Instead, call `store.createRecord` with the attributes you would like to set. 
    }); 

템플릿 모든

<script type="text/x-handlebars" data-template-name="cars"> 
       <h1>Add Car</h1> 
       <table> 
        <tr> 
         <td>Plate Number</td> 
         <td> 
          {{ input value=newCar.plateNumber }} 
         </td> 
        </tr> 
        <tr> 
         <td>Color</td> 
         <td> 
          {{ input value=newCar.color }} 
         </td> 
        </tr> 
        <tr> 
         <td>Brand</td> 
         <td> 
          {{ input value=newCar.brand }} 
         </td> 
        </tr> 
        <tr style="text-align:right"> 
         <td colspan="2"> 
          <button>Add Car</button> 
         </td> 
        </tr> 
       </table> 
    </script> 

답변

1

먼저, 루트 모델 훅에 설치 모델을해야한다. 그리고 오류 메시지가 나타나면 상점의 createRecord 함수를 사용하여 모델의 새 인스턴스를 만들어야합니다.

sapp.CarsRoute.extend(function() { 
    model: function() { 
     return this.store.createRecord('car'); 
    } 
}); 

자동차 경로로 전환하기 전에 자동으로 자동차 기록이 설정되고 자동차 컨트롤러에서 모델 속성을 설정합니다.

그런 다음 우리는이 같은 ObjectController에 컨트롤러를 변경해야 객체 컨트롤러와

sapp.CarsController = Ember.ObjectController.extend({}); 

는 속성이 자동으로 모델의 속성에 바인딩됩니다. 도움이

{{input value=brand }} 

희망을 : 당신이 당신의 템플릿이 같은 이러한 속성에 필드를 바인딩 할 수 있도록 그래서 예를 들어, 자동차 모델의 브랜드 속성은 자동차 컨트롤러의 브랜드 속성에 바인딩됩니다!

관련 문제