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
Backbone.js 下划线模板:用空格传递主干模型属性_Backbone.js_Underscore.js - Fatal编程技术网

Backbone.js 下划线模板:用空格传递主干模型属性

Backbone.js 下划线模板:用空格传递主干模型属性,backbone.js,underscore.js,Backbone.js,Underscore.js,我有一个带有空格属性的模型。这似乎没问题。但是,我无法将其传递到下划线模板 看看我的确切问题 var Person = Backbone.Model.extend({ defaults: { 'first name' : 'Mendel' } }); var person = new Person(); var template = _.template("Hello <%= 'first name' %>!"); console.log(person.get('fi

我有一个带有空格属性的模型。这似乎没问题。但是,我无法将其传递到下划线模板

看看我的确切问题

var Person = Backbone.Model.extend({
    defaults: {
    'first name' : 'Mendel'
}
});
var person = new Person();
var template = _.template("Hello <%= 'first name' %>!");
console.log(person.get('first name'));
// Possible ??
console.log(template(person.attributes));
var Person=Backbone.Model.extend({
默认值:{
“名字”:“孟德尔”
}
});
var person=新的person();
var-template=551;.template(“你好!”);
console.log(person.get('first name'));
//可能吗??
日志(模板(person.attributes));
试图寻找解决方案,但迄今为止运气不佳


谢谢

根本问题在于:

默认情况下,template通过
with
语句将数据中的值放入本地范围

因此,您在
中使用的所有内容都假定为有效的JavaScript变量名。您的
first name
不是有效的JavaScript变量名,因此所有内容都不完整

一个快速的解决方案是手动命名所有内容的名称空间,这样您就可以使用
[]
访问您的属性,从而避免“JavaScript变量名不能包含空格”问题:

然后你可以这样做:

var template = _.template("Hello <%= person['first name'] %>!", null, { variable: 'person' });
console.log(template(person.attributes));
var-template=..template(“Hello!”,null,{variable:'person'});
日志(模板(person.attributes));
演示:


另一种选择是停止使用名称中有空格的属性。如果您的所有模型属性名称也是有效的JavaScript变量名称,那么问题就会消失。

根本问题在于:

默认情况下,template通过
with
语句将数据中的值放入本地范围

因此,您在
中使用的所有内容都假定为有效的JavaScript变量名。您的
first name
不是有效的JavaScript变量名,因此所有内容都不完整

一个快速的解决方案是手动命名所有内容的名称空间,这样您就可以使用
[]
访问您的属性,从而避免“JavaScript变量名不能包含空格”问题:

然后你可以这样做:

var template = _.template("Hello <%= person['first name'] %>!", null, { variable: 'person' });
console.log(template(person.attributes));
var-template=..template(“Hello!”,null,{variable:'person'});
日志(模板(person.attributes));
演示:


另一种选择是停止使用名称中有空格的属性。如果您的所有模型属性名称也是有效的JavaScript变量名称,那么问题就不会出现。

谢谢@mu。如果我的属性名称遵循它们所建模的css属性(包括破折号),那么事情就会变得更简单。所以现在我只需要决定哪一个比较容易:在需要时用破折号替换下划线字符,或者用名称空间的var.Hmmm重写模板。非常感谢您的输入!谢谢@mu。如果我的属性名称遵循它们所建模的css属性(包括破折号),那么事情就会变得更简单。所以现在我只需要决定哪一个比较容易:在需要时用破折号替换下划线字符,或者用名称空间的var.Hmmm重写模板。非常感谢您的输入!
var template = _.template("Hello <%= person['first name'] %>!", null, { variable: 'person' });
console.log(template(person.attributes));