선택 드롭 다운이 있습니다. 변경 이벤트는 세션 변수를 설정하도록 트리거합니다. 이 세션 변수를 사용하여 테이블을 채우고 싶지만 템플릿에서 세션 변수를 읽지 않습니다. 내가 어디로 잘못 가고 있습니까?
<template name ='defaultTemplate'>
<label for="Schema" class="control-label">Select the Schema</label>
<select required="true" class="form-control" id="schemaNameId">
<!-- <option default>Select Schema </option> -->
{{ #each schemaNames}}
<option value="{{schemaName}}">{{schemaName}}</option>
{{/each}}
</select>
이 시점의 콘솔 로그는 정의되지 않음을 나타냅니다. 드롭 다운에서 항목을 선택하면 해당 값이 세션 변수로 설정됩니다.
아래 표는 위의 템플릿에 이어집니다. 그러나 콘솔 로그는 schemaLabel
도우미와 관련된 내용을 인쇄하지 않는 것 같습니다.
<table class="table table-bordered table-condensed">
<thead>
<tr>
<td style="width: 85px">Label</td>
<td>Current Value</td>
<td style="width: 250px">New Value</td>
</tr>
</thead>
<tbody>
{{#each schemaLabels}}
<tr>
<td>{{this.label}}</td>
<td>{{this.value}}</td>
</tr>
{{/each}}
</tbody>
</table>
</template>
행사:
처음에는 세션 변수 값이 정의되지 않았습니다. 드롭 다운에서 선택한 요소를 계속 변경하면 세션 변수 값이 계속 변경되므로 좋습니다.
Template.defaultTemplate.events({
"change #schemaNameId": function(event, template){
var selectValue = template.$("#schemaNameId").val();
// console.log(selectValue +" is selected from dropdown - message logged in events");
Session.set("selectedSchema",selectValue);
console.log(Session.get("selectedSchema")+ " is session variable set - message logged in events");
}
});
도우미 :
드롭 다운을 계속 변경하면 아래의 콘솔 로그도 계속 변경됩니다. 헬퍼 내에서 세션 변수에 도달 할 수 있기 때문에 이것은 다시 좋은 신호입니다.
Template.defaultTemplate.schemaNames({
schemaNames: function () {
console.log(Session.get("selectedSchema")+ " is session variable - message logged in defaultTemplate:schemaNames");
return Defaults.find({},{schemaName:1}).map(function(c) {return {schemaName : c.schemaName};
});
},
그러나 아래 기능의 경우 콘솔 로그에 아무것도 인쇄되지 않습니다! 즉,이 모든 것이 동일한 도우미 클래스에 있더라도 제어가이 지점에 도달하지 않습니다.
schemaLabels: function() {
var selectedSchema = Session.get("schemaName");
console.log(Session.get("schemaName") +"is the selectedSchema - message logged in defaultTemplate:schemaLabels");
return Defaults.find({schemaName:selectedSchema},{_id:0,schemaName:0}).map(function(c) {return {label : c.label, value: c.value};});
}
});
추가 수정을 통해 세션 변수가 처음에 한 번만 schemaLabels 도우미 함수 내에서 호출된다는 것을 알았습니다. 정의되지 않음으로 설정되었습니다. 그 후에는 이것을 호출하지 않습니다. 따라서 내가 선택한 드롭 다운에 관계없이 테이블에는 아무것도 채워지지 않습니다.
왜 그 schemaLabels
도우미가 전화해야 한다고 생각하는지 이해가 안 돼요 . 두 개의 서로 다른 세션 변수 ( selectedSchema
및 schemaName
)를 사용하고 있으므로 이러한 도우미는 분리됩니다.
따라서 selectedSchema
(Session) 을 변경할 때마다 schemaLabels
헬퍼가 호출되도록하려면 다음과 같이 schemaLabels를 수정해야합니다.
schemaLabels: function() {
var foo = Session.get("selectedSchema");
var selectedSchema = Session.get("schemaName");
console.log(Session.get("schemaName") +"is the selectedSchema - message logged in defaultTemplate:schemaLabels");
return Defaults.find({schemaName:selectedSchema},{_id:0,schemaName:0}).map(function(c) {return {label : c.label, value: c.value};});
}
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다