Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/401.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 默认值和范围中未定义的主干模型_Javascript_Backbone.js_Marionette_Underscore.js Templating - Fatal编程技术网

Javascript 默认值和范围中未定义的主干模型

Javascript 默认值和范围中未定义的主干模型,javascript,backbone.js,marionette,underscore.js-templating,Javascript,Backbone.js,Marionette,Underscore.js Templating,如果主干模型没有模板中引用的属性的默认集,那么它看起来是在全局范围内吗?(编辑:我也在使用木偶和下划线) 我有一个包含以下内容的模板: <td><@= ((location !== null)?location:'N/A') @></td> 然后,它会像预期的那样显示“不适用” 我想我的问题是,主干是这样运行的吗?如果该属性在模型上未定义,它是否会查看其他范围?或者这与呈现模板时如何计算位置有关 我真的很想了解正在发生的事情,所以我有一个更好的想法,我可能需

如果主干模型没有模板中引用的属性的默认集,那么它看起来是在全局范围内吗?(编辑:我也在使用木偶和下划线)

我有一个包含以下内容的模板:

<td><@= ((location !== null)?location:'N/A') @></td>
然后,它会像预期的那样显示“不适用”

我想我的问题是,主干是这样运行的吗?如果该属性在模型上未定义,它是否会查看其他范围?或者这与呈现模板时如何计算位置有关


我真的很想了解正在发生的事情,所以我有一个更好的想法,我可能需要改变事情,以最正确的方式防止范围污染。

我从未见过主干模型访问全球范围。无论如何,这似乎并没有连接到主干网,准确地说,主干网并没有附带模板引擎。模板通常由下划线处理,我在项目中也使用下划线。在这里,我假设您正在传递模型属性,如下所示:

myModel.toJSON();
这将返回一个包含所有属性键/值对的对象。然后,可以在模板中访问它们,就好像它们被定义为变量一样。下划线不了解模型,它只访问传递给它的变量。如果没有名为“location”的变量,它将从全局对象“window”获取该变量。这是javascript的正常行为


尝试按原样传递模型以下划线,并改用myModel.get(“位置”)

我通过使用@muistooshort描述的
变量
模板选项,并使用模板中定义的名称空间,解决了这个问题

_.templateSettings = {
    variable: "_tdata"
};
-



更新所有的模板有点痛苦,但最终效果很好。似乎应该有一个更简单的实现,比如下划线模板设置中的一个简单标志。

不完全如此。问题是,编译的下划线模板用于使传递的对象看起来像一个作用域,然后在解决问题时,
with
转到
window
。有
\模板
选项禁止使用
。将整个模型传递给模板通常被认为是一个坏主意。丹尼尔-对不起,我使用下划线。我更新了我的问题,但它一定是在你回答的同一时间。@muistooshort太短了-听起来很有道理,也有道理。感谢您提供有关下划线上模板选项的提示。
_.templateSettings = {
    variable: "_tdata"
};
<td><@= ((location !== null)?_tdata.location:'N/A') @></td>