0

単純な文字列を返す2つの関数があります。両方とも登録されています。

$.views.helpers({
    parseDate: function (jsonDate) {
        if (jsonDate != null) {
            var date = new Date(parseInt(jsonDate.substr(6)));
            var newDate = $.fullCalendar.formatDate(date, "MM/dd/yyyy");
            return newDate;
        }
    },
    renderPrimaryResource: function (PrimaryResource, LessonID) {
        debugger;
        $.ajax({
            url: "cl/lb",
            dataType: "json",
            data: { id: PrimaryResource.ResourceID },
            type: 'GET',
            async: false,
            success: function (data) {
                var thumbnailImage = data[1];
                return thumbnailImage;
            }
        });
    }

});

私のjsrenderテンプレートは両方の関数を呼び出します。日付解析関数が呼び出され、正常に返されます。2番目の関数が呼び出されて何かを返しますが、jsrenderはそれを取得しませんか?何が起こるかわかりませんが、完全に無視されます。

<script id="LessonDetailTemplate" type="text/x-jsrender">
{{for lessons}}
    <div class="row lesson-block">
        <div class="span4">
            <h4>{{:LessonName}}</h4>
            <span><strong>Due on <span>{{:~parseDate(DueDate)}}</span>
            <br/>
            <p>{{:LessonDescription}}</p>
        </div>
        <div class="span4">
            <span">{{:~renderPrimaryResource(PrimaryResource, LessonID)}}</span>
        </div>
    </div>
{{/for}}

なぜこれがレンダリングされないのか、誰かが何か考えを持っていますか?私が考えることができるのはajax呼び出しだけですが、デバッグ中は、関数が何かを返すまでテンプレートは続行されません。だから私は何が起こっているのか途方に暮れています。

4

1 に答える 1

1

誰かがこれにつまずいた場合に備えて答えます。問題は、実際にはajax呼び出しでした。正確にはわかりませんが、ajax呼び出しの成功部分から文字列を返すことはできません。関数を次のように変更し、正常に動作します。

renderPrimaryResource: function (PrimaryResource, LessonID) {
    debugger;
    $.ajax({
        url: "cl/lb",
        dataType: "json",
        data: { id: PrimaryResource.ResourceID },
        type: 'GET',
        async: false,
        success: function (data) {
            var thumbnailImage = data[1];
        }
    });
    if(thumbnailImage != null){
        return thumbnailImage;
    }
}
于 2012-06-12T13:34:42.350 に答える