jQuery技术:模板中的下划线条件

这是我的模板:

var tmpl = _.template('<  class=""  ></>'); 

我将使用此模板渲染的一些对象没有设置elementClass属性。 我试图使用_.has以便模板只尝试打印定义了elementClass对象的属性,但我没有成功。 控制台错误仅表明未设置elementClass ,可能是因为条件语句无法正常工作。

我知道这是一个简单的问题,但我似乎无法解决它 – 如何在这样的语句中使用条件来检测没有设置某些属性的对象?

    通常,您不能为此使用_.isDefined 。 考虑这个模板:

      

    而这段代码:

     var t = _.template($('#t').html()); console.log(t({ })); 

    t的调用应该给出一个ReferenceError,因为编译模板函数的作用域中没有elementClass 。 因此,如果您的对象根本没有elementClass属性,那么当您尝试获取模板时,模板函数将失败。

    演示: http : //jsfiddle.net/ambiguous/H22D2/

    问题是_.isUndefined函数只能检查表达式的 ,它不能检查是否已声明传递给它的变量(或由于模板的内部使用而导致的属性)。

    如果对象将具有elementClass属性但它可能具有未定义的值,那么您可以使用_.isDefined和this:

     t({ elementClass: undefined }) 

    没关系。

    演示: http : //jsfiddle.net/ambiguous/LUakg/

    如果对象可能具有或不具有elementClass属性,那么您将使用typeof卡住,因为typeof不会尝试评估其操作数。 像这样的东西:

      

    在所有三个感兴趣的案例中都能正常工作:

     var t = _.template($('#t').html()); console.log(t({ })); console.log(t({ elementClass: undefined })); console.log(t({ elementClass: 'pancakes' })); 

    演示: http : //jsfiddle.net/ambiguous/H5xC7/

    您可以检查elementClass是否undefined 。 (正如我之前认为的那样,使用_.isUndefined不会。)

     var tmpl = _.template('<<%= elementTag %> <% if ( typeof elementClass !== "undefined" ) ) { print("class='elementClass'") } %> <%= elementExtra %>><%= template(elementContent) %>>'); 

      以上就是jQuery教程分享模板中的下划线条件相关内容,想了解更多jQuery开发(异常处理)及jQuery教程关注计算机技术网(www.ctvol.com)!)。

      本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

      ctvol管理联系方式QQ:251552304

      本文章地址:https://www.ctvol.com/jquerytutorial/561881.html

      (0)
      上一篇 2021年2月5日
      下一篇 2021年2月5日

      精彩推荐