jsrender不在模板中显示函数返回

时间:2012-06-12 12:57:02

标签: javascript jquery jsrender

我有两个返回简单字符串的函数。两者都已注册。

$.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模板调用这两个函数。调用解析日期函数并按原样返回。第二个函数被调用并返回一些东西,但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调用,但调试模板时不会继续,直到函数返回一些东西。所以我迷失了正在发生的事情。

1 个答案:

答案 0 :(得分: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;
    }
}