我有两个返回简单字符串的函数。两者都已注册。
$.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调用,但调试模板时不会继续,直到函数返回一些东西。所以我迷失了正在发生的事情。
答案 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;
}
}