문제

목록보기가있는 전형적인 시나리오가 있고 세부 정보보기가 있습니다.목록 항목을 선택하여 세부 정보보기에 도달합니다.당연히 기록에 데이터가 세부 사항의 레이아웃보기에 알립니다.내가 보는 것은 subtemplate의 도우미 기능이 나열 뷰 렌더링 중에 너무 빨리 호출되는 것입니다 (목록보기 렌더링 중).또한 목록에서 항목을 클릭 할 때 호출되지 않습니다.내가 도대체 뭘 잘못하고있는 겁니까?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");
};
.

위의 코드에서 "일"도우미 기능이 표시되지 않은 레코드에서 "WorkWeekOF"날짜를 가져 오려고 할 때 목록 페이지가 표시되므로 "일"도우미 기능이 표시됩니다.레코드가 선택되면이 호출 만 통화 할 수 있습니까?

도움이 되었습니까?

해결책

이것은 처음부터 CanqDetails 템플릿이 렌더링되는 방법을 보여주는 위의 내용이 없기 때문에 이것은 약간 혼란 스럽습니다.그러나 그것이 가정하면, 당신은 단지 사용할 수 있습니다 :

var dt = Session.get("record") ? Session.get("record").additionalProperties.workWeekOf : [default date]
.

[default date]는 Sensible 일 수 있습니다 (new Date()). 오류가 발생하지 않도록 무언가를 반환해야합니다.이것은 유성의 꽤 일반적이지만 쉽게 문제가 쉽습니다. 세션 변수 또는 컬렉션이 아직 준비가되지 않은 경우에 적합한 기본값이 필요합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top