リストから項目を選択した後のメテロのみテンプレートのみをトリガーします
-
21-12-2019 - |
質問
リストビューがある典型的なシナリオを持っていて、詳細ビューがあります。リスト項目を選択して詳細ビューに到達します。記録には、もちろん詳細のレイアウトビューに通知されます。私が見ているのは、SubTemplateのヘルパー関数がListの詳細のデータを持つようにするために(リストビューレンダリング中)と呼ばれていることです。さらに、リスト内の項目をクリックすると呼ばれていません。私は何が悪いのですか?JQM 1.4.3でMeteor 0.8.2を使用しています。
HTMLは次のようになります。
<!-- details page -->
<div data-role="page" data-theme="q" id="listdetail">
<div data-role="header" data-position="fixed">
<a data-rel="back" href="#" data-transition="slideleft" class="baack fa fa-arrow-left"></a>
<div id="detailTitle" class="headertitle"></div>
</div>
<!-- /header -->
<div data-role="content" class="ma-req-detail" id="details">
{{> qDetails}}
</div>
</div>
<!-- /details page -->
<template name="qList">
{{#each items}}
{{>qListItems}}
{{/each}}
</template>
<template name="qListItems">
<li>
<div id="msg-container-{{requestId}}" class="processing-msg">
<a href="#" data-rel="back" data-role="button" data-iconpos="notext" class="ui-btn-right msg-dismiss"><i class="fa fa-2x fa-times-circle"></i></a>
<p class="msg-text-{{requestId}}">Action pending...</p>
</div>
<a id="requestId" href="#listdetail" data-name="{{additionalProperties}}" data-transition="slide" class="{{#if isProcessing}}ui-disabled{{/if}}">
<p class="requestor">{{additionalProperties.requestedForUid}}</p>
<p class="description">week of {{additionalProperties.workWeekOf}}</p>
<p class="reqdate">total hours: </p>
</a>
</li>
</template>
<template name="qDetails" >
<div role="main" class="q-details">
<div data-role="navbar" class="week-nav">
<ul>
{{#each days}}
{{>navElements}}
{{/each}}
</ul>
</div>
</div>
<div class="ma-buttons ui-fieldcontain ui-footer-fixed">
<div data-role="controlgroup" data-type="horizontal" class="" data-position-fixed="true" data-position="bottom">
<a data-mini="true" href="#" id="approve-request"
class="ui-btn ui-btn-c ui-corner-r ui-icon-check ui-btn-icon-left ma-btn approve">Approve</a>
</div>
</div>
</template>
<template name="navElements">
<li><a id="{{day}}Nav" href="#{{day}}">{{day}}<br><span class="digital-date">{{date}}</span></a></li>
</template>
.
JSビットは次のとおりです。
Template.qDetails.rendered = function() {
$('#details').trigger('create');
};
Template.qDetails.helpers({
days: function() {
//TODO need a way to delay this function to call when details template is shown
var dt = Session.get("record").additionalProperties.workWeekOf;
var days = [];
var weekday = new Array(7);
weekday[0] = "SAT";
weekday[1] = "SUN";
weekday[2] = "MON";
weekday[3] = "TUE";
weekday[4] = "WED";
weekday[5] = "THU";
weekday[6] = "FRI";
var dtVal = dt.getDate();
for (var i = 0; i < 7; i++) {
var dayObj = {};
dayObj.date = dtVal + i;
dayObj.day = weekday[i];
days.push(dayObj);
}
return days;
}
});
Template.qDetails.record = function () {
return Session.get("record");
};
.
「Days」ヘルパー関数が表示されている場合、「WorkWeekof」の日付をまだ選択されていないレコードから引き込ませようとしているため、リストページが表示されている場合は呼び出されます。レコードが選択されたら、この唯一のコールに着くことができますか?
解決
これは、上記のものには何もないので、最初の場所でyourqDetails
テンプレートがどのようにレンダリングされるかを示していますのでわずかに混乱しています。ただし、それがそうであると仮定して、あなたは単に使用することができます:
var dt = Session.get("record") ? Session.get("record").additionalProperties.workWeekOf : [default date]
.
[default date]
は、賢明なもの(new Date()
のように)でもかまいませんが、スローされているエラーを回避するために何かを返す必要があります。これはかなり一般的ですが非常に簡単に解決された問題では、セッション変数やコレクションがまだ準備ができていないときに適したデフォルトが必要です。
所属していません StackOverflow