2012-02-20 2 views
4

현재 내 응용 프로그램에 대한 "새 항목 양식"이 있습니다. 템플릿으로 콧수염을 사용했습니다. ajax를 통해 전송 된 데이터베이스의 데이터가 필요한 필드가 있습니다. 예를 들어 특정 선택 상자와 같은콧수염에 선택 상자를 채우고 선택 JS

<select name="customerOrder"> 
    {{#order}} <option value="{{id}}">{{itemName}}</option> {{/order}} 
</select> 

데이터 같을 것이다 항목이를 채우기 위해 : 내가 폼 데이터 이외의 선택 상자를 채우기 위해, 편집 형태를 만들려고 오전까지

{ 
    "order": [ 
     { 
      "id":1, 
      "itemName":"Meat Lover's Pizza" 
     }, //and so on... 
    ] 
} 

잘 작동 확인란을 선택하면 양식 요소를 선택 사항으로 표시해야합니다. 그러나 ...

아이템 데이터 그러므로 다른 JSON 객체 다른 Ajax 호출에서 검색된다. 데이터가 다른 구조 일 수 있으므로 병합 할 수 없습니다. 나는 this approach을 시도 할 수 있었지만 이것은 폼 데이터와 아이템 데이터가 "하나"가 될 것이라는 것을 의미했다. 나는 그것을 원하지 않는다. 나는 확실한 데이터의 명확한 분리, 그리고

이 항목 데이터는 기본적으로 다음과 같습니다 비 유형의 데이터를 원하지만 JSON 객체 어딘가에 중첩 될 수 있습니다

{ 
    "customer":"mario", 
    "order": 1   --> this item i want selected in the form 
    //and so on... 
} 

일부를이 있다면 그런 다음 양식을 작성한 후 콧수염을 사용하면서 완벽하게 채 웁니다. 나는 해당 양식 필드로 데이터를 하드 코딩하고 싶지 않다.

내가 런타임 렌더링 및 파셜에 대해 들었지만, 나는이 그들을 사용하는 거라고 방법을 볼 수없는 것.

답변

2

나는 그것을 알아 냈다! 저는 콧수염에 "거꾸로 된 부분"을 사용하는 아이디어를 얻었습니다.

제가 위에서했던 하나는 막 다른 것 같았다이나 내가 추구한다면, 나는 모든 것을 복잡하게 할 것입니다. 내가 무슨 짓을

했다 :

  1. 대신의 <select>에서 그들을 작성을위한 템플릿을 <option>에 대한 값을 통해 보내고있는 아약스 가지고, 난 내 템플릿은 서버 측에서 구축하고 <select>를 입력했다 의 데이터 옵션. 또한, 나는 선택한 항목에 대한 "마커"로 템플릿을 사용했습니다. 아약스를 통해 가져올

  2. 유일한 것은 아이템 데이터 될 것입니다. 빌드 된 템플릿에 맞게 JSON 객체의 구조를 변경했습니다.

    //build from the server-side ready with options, and with "markers 
    
    <select name="customerOrder"> 
        <option value="1" {{#order}}{{#i1}}selected="selected"{{/i1}}{{/order}}>Meat Lover's Pizza</option> 
        <option value="2" {{#order}}{{#i2}}selected="selected"{{/i2}}{{/order}}>Supreme</option> 
    </select> 
    
    //JSON "edit-mode" data 
    
    { 
        "order": { 
         "i2":true // this will render the "selected" attribute on the one with "i2" 
        }    // refer to "non-empty" list and "inverted sections" 
    }     // http://mustache.github.com/mustache.5.html 
    
    대신 데이터를 넘겨, 나는 대신, "마커"

최종 결과 넘겨

관련 문제