"문제"목록이 있습니다. 각 사안에는 _id와 이름이 있습니다.{{#}} 블록 내의 CustomHelper
나는 "거래"를하고 있습니다. 모든 트랜잭션은 transaction.matterId 속성을 통해 사안의 _id를 참조하여 사안에 속합니다.
현재 거래가 변경되도록 허용하기 위해 사용자 인터페이스에서 작업하고 있습니다 (거래가 지정된 사항 변경 포함). 이처럼 :
나는 부트 스트랩 각 문제에 대한 옵션을 사용하여 입력을 선택 생성하기 위해 핸들을 사용하고Enter date:
Select a matter: (this is the culprit)
Enter the amount:
- 즉, "문제를 선택 ..."이 쉽게 핸들 {{# 각}} 블록으로 이루어집니다 돕는 사람. 모든 문제가 옵션으로 올바르게 표시되며 각 옵션의 값이 올바르게 지정됩니다. 지금까지 아무런 문제가 없습니다 ...
그러나이 값은 update.MatterId와 일치하는 옵션을 업데이트 화면이므로 미리 선택해야합니다. 이를 위해 {{# each}} 블록 내에서 사용자 정의 "IfEquals"도우미를 호출합니다. 핸들 템플릿은 다음과 같이이다 :
<div>Matter: {{ transaction.matterId}}</div> <-- I can see the matterId here.
<div class='form-group'>
<label for="selMatter">Case</label>
<select required id="selMatter" name="matterId" class="form-control">
{{# each matters }}
<option value='{{ _id }}' {{ ifEqual _id ../transaction.matterId "selected" "" }} >{{ name }}</option>
{{/ each }}
</select>
</div>
사용자 지정 도우미는 이것이다 :
ifEqual: function (obj, value, trueString, falseString) {
return ((obj===value) ? trueString : falseString);
}
의 제 1 회 <div>
을 가정 해 봅시다은 "5"의 transaction.MatterId을 보여줍니다 값이 "5"인 하나의 옵션 만있을 것입니다.
핸들 바 템플릿에서 나는 2 개의 값을 적절하게 비교하기 위해 {{IfEqual}}을 (를) 얻을 수있는 모든 종류의 가능성을 시도했습니다. "../"없이 transaction.matterId를 시도하여 컨텍스트 문제인지 여부를 확인했습니다. 불운. 나는 (심지어 자신의 도우미 함수로) 핸들 바 부분 표현식을 사용해 보았습니다. 아니.
{{IfEqual}} 도우미에서 적절한 값을 가져 오지 못하고 있는데, 일치하는 <option>
이 있어도 "선택됨"특성을 핸들 막대에 추가 할 수 없습니다.
여기 내가 볼만한 곳이라고 생각하지만, 내가 무엇을 놓치고 있는지 보지 못했습니다. http://handlebarsjs.com/expressions.html
템플릿은 나에게 잘 나타납니다 . '_id'와'transaction.matterId'가 String과 Number와 같은 다른 타입 인 경우 이것이 작동하지 않을 것이라고 생각할 수있는 유일한 이유가 있습니다. – 76484
@ 76484 그들은 서로 다른 유형이라고 생각합니다. 따라서 toString()은 아래의 답변에서 캐스팅됩니다. 위의 코드에서 원래의 {{ifEqual}} 도우미를 .toString()과 함께 사용하려고 시도했지만 handlebars가 parseError를 사용하여이를 거부합니다. 그것은 .toString()을 좋아하지 않습니다. 상자 수정 프로그램이 없거나 아래의 다른 사용자 지정 도우미에 의존해야합니까? –
수정 프로그램이 실제로 데이터 영역에 있어야하며 ID는 항상 일관된 형식이어야합니다. 이것이 가능하지 않다면'toString' 커스텀 도우미를 만들어서 'ifEqual' 헬퍼에 전달하기 전에 문자열을 스트링 할 것을 권한다.양자 택일로,'ifEqual' 헬퍼를 업데이트하여'obj'와'value'를 문자열에 캐스트 할 수 있습니다.하지만 헬퍼가 조금 정직하지 못하기 때문에이 접근법을 좋아하지 않습니다. – 76484