检查下划线模板中未定义的变量

2024-04-12

我在模板中显示了libraryPrep对象的模式视图,如下所示:

if (_.isUndefined(this.libraryPreps)) {
                this.$el.html(this.template({  }));
            } else {
                this.$el.html(this.template({ libraryPreps: this.libraryPreps.toJSON() }));
            }

当我有一个libraryPreps 对象时,else 语句有效。在我的模板中,我这样使用它:

<select id="libraryPreps" >
                    <%  if (!_.isUndefined(libraryPreps)) { %>
                    <% _.each(libraryPreps, function (libraryPrep) { %>
                    <option value="<%=libraryPrep.id%>"><%= libraryPrep.name %></option>
                    <% }); %>
                    <% } %>
                </select>

当我没有libraryPreps 对象时,我无法渲染模板,并且在控制台上收到一条错误,指出libraryPreps 未定义。我是否在模板中错误地检查了未定义?我觉得我在主干模式视图中以同样的方式检查它,但由于某种原因,在我的实际模板中,它似乎不起作用。我的模板符号正确吗?谢谢。


如果您将变量传递给函数,则会对其进行求值,并会抛出错误,因为不存在这样的变量。相反,在您的主干视图中,您正在访问property一个始终有效的对象(并返回undefined值(如果不存在具有该名称的属性)。

相反,您必须使用typeof运算符,这甚至适用于未声明的变量(看看变量===未定义与typeof变量===“未定义” https://stackoverflow.com/q/4725603 and JavaScript 检查变量是否存在(已定义/初始化) https://stackoverflow.com/q/5113374/1048572):

<select id="libraryPreps"><%
    if (typeof libraryPreps !== "undefined") {
        _.each(libraryPreps, function (libraryPrep) { %>
            <option value="<%=libraryPrep.id%>"><%= libraryPrep.name %></option><%
        });
    }
%></select>

To use _.isUndefined在您的模板中,您需要使该值在模板中显式可用。从the docs http://underscorejs.org/#template:

默认情况下,template通过以下方式将数据中的值放置在本地范围内with陈述。但是,您可以使用以下命令指定单个变量名称variable环境。这可以显着提高模板的渲染速度。

_.template("Using 'with': <%= data.answer %>", {answer: 'no'}, {variable: 'data'});
=> "Using 'with': no"

这样,您就可以编写如下模板:

 <% if (!_.isUndefined(data.libraryPreps)) { %> …
 <% if ("libraryPreps" in data) { %> …
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

检查下划线模板中未定义的变量 的相关文章

  • javascript:全局变量泄漏

    每当我向 Firefox 提交插件时 我都会收到一封电子邮件 告诉我我的一些变量正在泄漏到全局范围内 一旦他们告诉我我解决了问题 但在那之前有什么方法 程序 来检查变量是否泄漏到全局范围内 Thanks Both JSLint http w
  • 返回上一页

    我正在使用表格来 评价 页面 此表单将数据 发布 到其他地方的 php 脚本 我只是想在处理表单后显示一个链接 这将使用户返回到上一页 我可以在 php 脚本中使用 javascript 来执行此操作吗 GF 您可以使用链接来调用histo
  • jQuery 可以操作插入的元素吗?

    我是 jQuery 的新手 我认为 jQuery 可以操作由代码添加的元素是合理的 但我发现现在还不能 function addVideo click function publisher append div div
  • React中如何触发同级组件的函数?

    I am new to front end world and could not figure out how to trigger a function from a sibling component Lets say I have
  • 需要参数的addEventListener(和removeEventListener)函数

    我需要向 8 个对象 手掌 添加一些侦听器 这些对象是相同的 但行为必须根据它们的位置而改变 我有以下 丑陋的 代码 root palmsStatus B B B B B B B B if root palmsStatus 0 N root
  • Visual Studio 改变 Ctrl-K-D 的工作方式

    In Visual Studio I m using 2012 is there any way of editing the way that Ctrl K D combinations handles its Auto Formatti
  • 仅在 Chrome 上我收到此错误:Uncaught TypeError: Illegal constructor [关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 当我在 Chrome 上加载 jQuery 时 我会收到此错误 Uncaught TypeError Illegal constr
  • Pjax动画

    我终于让 pjax 工作了 但我还有另一个问题 如何添加一些 jquery 动画 如淡出 幻灯片旧内容和淡入 幻灯片新内容 默认情况下 pjax 只是更改内容 没有任何好看的效果 任何帮助将非常感激 此致 基本上 你有一堆事件 https
  • Node.js Express 4.0 中的 res.render 回调参数的用途是什么?

    目的是什么res render回调参数 在什么情况下 由于模板已被指定为第一个参数 因此人们会想要使用这样的回调参数 这是文档中的代码 send the rendered view to the client res render inde
  • 自调用函数未定义

    如果我声明一个函数文字 var x function alert hi console log x returns the function code However var x function alert hi console log
  • 为什么函数声明在不同浏览器中的处理方式不同?

    虽然我在谷歌中找不到对此的引用 但我熟悉这样一个事实 在 javascript 中 全局函数声明在执行任何代码之前都会被解释 换句话说 这工作得很好 f function f 但是 我注意到 chrome 和 firefox 对全局函数声明
  • 冒泡可用于图像加载事件吗?

    我可以用吗 window addEventListner 某种程度上来说 我所有的图像都有一个display none 图像加载后 我想设置display inline 这样我就可以规范下载图像时显示的内容 在这种情况下 我无法预加载图像
  • Next.js:错误:React.Children.only 期望接收单个 React 元素子元素

    我有一个名为Nav inside components目录及其代码如下所示 import Link from next link const Nav gt return div a Home a a About a div export d
  • Socket IO 服务器到服务器

    服务器是否可以使用 Socket IO 连接到另一个服务器并被视为客户端 并让它加入房间 接收 io sockets in lobby emit 和更多 第一个服务器也在监听连接 消息 嘿 Brad 下面是我的完整 js 应用程序 供参考
  • D3 向对象添加超链接?

    我正在尝试制作 D3 图 它将代表我网站的菜单 我尝试按照此处的其他指南添加超链接 但它们都不起作用 每个对象都会有一个不同的 URL 指向 主页 关于 联系方式等 如果添加超链接 我可以拖动对象吗 这意味着如果我按住单击 如果我单击该对象
  • 如何使用 GreaseMonkey 让浏览器恢复“/”键?

    Lots of web pages seem to use the key for searching I d like to disable that because 100 of the time I want to use to se
  • 如何使用 jQuery 单击特定链接时打开引导导航选项卡的特定选项卡?

    我是 jquery 和 bootstrap 的新手 所以请考虑我的错误 我已经创建了一个用于登录和注册的 bootstrap 模式 它包含两个导航选项卡 称为登录和注册 我有两个按钮可以弹出相同的模态窗口 但在模态窗口内显示不同的选项卡 每
  • 绘制多边形

    我正在使用 Google Maps API V3 根据路径绘制多边形 该路径是随机未排序坐标点 LatLng 的数组 这会产生以下形状 Polylines intersect Problem 由于多边形的形状取决于路径中点的顺序 因此如何对
  • 如何获取符号名称(文字)?

    以下情况 var myVehicle brand Tesla var isMoving Symbol var currentStatus Symbol myVehicle isMoving true myVehicle currentSta
  • 使圆圈与 d3.js 上的多线匹配相同的颜色过滤?

    我有一个多线图 当按每种水果过滤时会更新 每条线条颜色对应不同的销售年份 在 的帮助下Shashank https stackoverflow com users 5569282 shashank 每个数据点线上的圆圈已添加到组中 而不是直

随机推荐

  • PHP:特定代码行的 sleep()

    是否可以使用 sleep 或其他函数 在执行之前等待 我有例如 div bla bla div some divs and html 如何在页面加载后 5 秒执行第一个 php 脚本 但在页面加载时显示其他所有内容 如果我在第一个 php
  • Golang调用CUDA库

    我正在尝试从 Go 代码中调用 CUDA 函数 我有以下三个文件 test h int test add void test cu global void add int a int b int c c a b int test add v
  • 如何在 angularjs 中进行基本身份验证?

    如何在 AngularJs 中进行基本身份验证 我用谷歌搜索过 但资源对我不起作用 我是veryAngularJS 新手 假设你的 html 定义如下 h2 Todo h2 div div
  • connect-redis - 如何保护会话对象免受竞争条件影响

    我使用 nodejs 和 connect redis 来存储会话数据 我将用户数据保存在会话中 并在会话生命周期中使用它 我注意到两个更改会话数据的请求之间可能存在竞争条件 我尝试过使用 redis lock 来锁定会话 但这对我来说有点问
  • 有人可以澄清 Celery 任务中任务优先级的用法吗?

    该文档很少提及priority属性 一份罕见的文档参考资料如下 priority int The task priority a number between 0 and 9 Defaults to the attr priority at
  • Qt GUI 编译后没有改变

    我使用 Qt Designer 编译并运行创建了一个 GUI 然后我在 GUI 中做了一些更改并再次重新编译 但 GUI 保持不变 即使我删除小部件并重新编译它们也会出现 I tried Clean All and Clean Projec
  • Highcharts重绘不重绘数据

    我一直在玩Highcharts v3 0 10 在网页上呆了一周 打印页面时无法重新绘制图表 问题是我在图表中使用深色背景颜色 但在打印时 我想将其更改为白色 为了实现这一点 我需要redraw 更改后我的图表backgroundColor
  • 雪花错误:SQL 访问控制错误:没有足够的权限对​​帐户“”进行操作

    我有一个 Snowflake 的免费试用帐户 我正在尝试创建存储集成 但运行脚本后我收到以下错误 SQL访问控制错误 没有足够的权限来操作帐户 即使对于帐户管理员角色 也会出现上述错误 在 Snowflake 原始 Web UI 不是 Sn
  • 在编码 UI HtmlLogger 输出文件中写入消息

    我正在使用编码的 UI 进行自动化测试 我已经在 QTAgent32 exe config 文件中启用了 HtmlLogger 我正在获取 html 输出文件 但我正在考虑在该 html 输出文件中写入一些消息 我用了this TestCo
  • 使用 pymongo tailable 游标在空集合上消失

    希望有人能帮助我理解我是否遇到问题或者我只是不理解 mongodb tailable 游标行为 我正在运行 mongodb 2 0 4 和 pymongo 2 1 1 这是演示该问题的脚本 usr bin python import sys
  • obj.prototype = new ParentObj(); 之后的对象方法消失了在 JavaScript 中

    我正在尝试在 JavaScript 中继承对象 看一下这个例子 var BaseObject function var ChildObject function ChildObject prototype childMethod funct
  • 在幻灯片模式下运行 Jupyter 单元

    您可以通过运行以下命令在活动的 html 设置中显示 Jupyter 笔记本 jupyter nbconvert untitled ipynb to slides post serve 有没有什么方法可以以相同的幻灯片格式运行笔记本 以便实
  • 1 到 n 的整数之和

    我正在尝试编写一个程序来将 1 到 n 的数字相加 我已经设法让它多次打印数字 但不能将它们全部相加 它继续将两个数字相加 我的第一次尝试是 def problem1 3 n my sum 0 while my sum lt n my su
  • 手臂“版本”之间的差异? (仅限 ARMv7)

    基本上我想知道ARMv7l和ARMv7之间的区别hl 我有一个带有armv7l的arm处理器 并且有很多armv7的rpmhl 我完全不知道我必须搜索什么才能获得相关信息 这个 后缀 叫什么 还有其他类型吗 他们的做法有何不同 我假设它指示
  • 是否可以延长 Intellitrace 事件?

    具体来说 我想做的是从我的应用程序和库中引发新事件 类似于 ADO NET 公开的事件 现实生活场景 NHibernate 的补丁 即使查询已被缓存 因此不会到达 ADO NET 层 也会显示已执行的查询 我找到了很多关于usingInte
  • FragmentPagerAdapter 根据参数值在选项卡上重新加载处理后的片段

    我已经使用创建了我的项目this https github com tekinarslan AndroidMaterialDesignToolbar材料设计示例 我已经修改了代码 现在我有 5 个选项卡 现在我已经创建了 5 个片段类并将其
  • 无法更改 Django 管理模板

    刚刚开始官方 Django 教程 https docs djangoproject com en 1 7 intro tutorial02 customizing your project s templates并且已经遇到问题 无法在管理
  • 如何使用 Python OpenCV 定义阈值以仅检测图像中的绿色对象?

    我只想从自然环境中捕获的图像中检测绿色物体 我该如何定义它 因为在这里我想通过阈值 所以我们说 x 通过使用这个x 我只想将绿色对象变成一种颜色 白色 而其他对象必须以另一种颜色 黑色 出现 我该怎么做 One way 我制作了 HSV 颜
  • 学习 Ruby - 1.8 还是 1.9 版本?

    我已经学习 Python 一段时间了 但我想做的项目更适合 Ruby 例如 CSS 的 SAC API 在 Ruby 以及 C 和 Java 中可用 不管怎样 考虑到我将要构建 我现在应该学习哪个版本的 Rubyonly网络应用程序 感谢您
  • 检查下划线模板中未定义的变量

    我在模板中显示了libraryPrep对象的模式视图 如下所示 if isUndefined this libraryPreps this el html this template else this el html this templ