JavaScript显示模板更改不起作用

时间:2018-09-12 05:15:15

标签: javascript display-templates jslink

我有一个有效的JavaScript显示模板, 安装在母版页/显示模板中。

我有一个JSLink指向我的显示模板的视图, 一切都按预期进行。

但是,如果我对模板.js文件进行了更改,则这些更改是 没有反映在我看来。

我已经尝试了所有方法,包括更改定义的函数名称等, 只有一件事可以使我的更改得以呈现。

我必须:

  1. 从母版页中删除.js文件
  2. 更改文件中的函数名称以及其他更改
  3. 使用更新后的脚本创建一个新的模板文件(.js)
  4. 将视图JSLink指向新模板。

我假设在这种情况下,未注册更新的功能, 因为即使我删除了文件,它仍然可以工作。

有没有一种方法可以完成此任务而不必遍历整个过程 程序? 可以强制重新注册模板吗?

如下面的示例所示,我的函数名称为数字9, 因为我做了9次。

(function () {

//   Initialize the variables for overrides objects
    var overrideCtx = {};
    overrideCtx.Templates = {};

//  alert("Override call worked");

//  Use BaseViewID and ListTemplateType to narrow focus/scope on 
//  which web parts on the page are affected
//  overrideCtx.BaseViewID = 1;
//  overrideCtx.ListTemplateType = 100;

    /*
     * Using the Fields override leaves the rest of the rendering intact, but 
     * allows control over one or more specific fields in the existing view
     */
    overrideCtx.Templates.Fields = {
        'FirstReview': { 'View' : CustomField9 }
    };

    /*
     * Register the template overrides.
     */
    SPClientTemplates.TemplateManager.RegisterTemplateOverrides(overrideCtx);
})();


function CustomField9(ctx) {
    // Really basic field-level conditional formatting
    var ret

//      alert("Custom Field9");


    /* var theScore = parseFloat(theString);  */
    var review = ""+ctx.CurrentItem.FirstReview;
    var rev = review.split(",");
    var people = "Barb,Makarand,Paulo,Jorge,Nuno,Al,Hugo".split(",");
    var theRet = "<span><table>";

    for( i = 0; i < people.length; i++)
    {
        if ( rev.includes(people[i]) )
        {
            addentry = "<tr><td>" + people[i] + "</td><td><input type=checkbox checked /></td></tr>";
        }
        else
        {
            addentry = "<tr><td>" + people[i] + "</td><td><input type=checkbox /></td></tr>";
        }
        theRet += addentry;
    }

    theRet += "</table></span>";
    return theRet;
}

0 个答案:

没有答案