Ember.js 无法访问模型对象的属性,错误为“0”;无法重新定义属性:name";在余烬把手模板中
在ember模板中,my model.partners是一个对象数组,我试图迭代并打印所有名称属性,但出现了一个错误,错误是“无法重新定义属性:名称” 这是我的余烬环境信息Ember.js 无法访问模型对象的属性,错误为“0”;无法重新定义属性:name";在余烬把手模板中,ember.js,handlebars.js,Ember.js,Handlebars.js,在ember模板中,my model.partners是一个对象数组,我试图迭代并打印所有名称属性,但出现了一个错误,错误是“无法重新定义属性:名称” 这是我的余烬环境信息 DEBUG: ------------------------------- DEBUG: Ember : 1.4.0 DEBUG: Ember Data : 1.0.0-beta.7.f87cba88 DEBUG: Handlebars : 1.1.2 DEBUG: jQuery : 2.0.3
DEBUG: -------------------------------
DEBUG: Ember : 1.4.0
DEBUG: Ember Data : 1.0.0-beta.7.f87cba88
DEBUG: Handlebars : 1.1.2
DEBUG: jQuery : 2.0.3
DEBUG: -------------------------------
Ember Inspector ($E): Object {userInfo: Object, partners: (...),__ember1395345243022_meta: Meta}
这里会有什么问题?
任何帮助都将不胜感激
-编辑
我只是想知道错误消息“不能重新定义属性”的意思是什么,谁在抱怨这一点
这是当我使用{{partner.name}得到错误时,来自Ember检查器的日志,您可以看到Ember.watchKey是堆栈的顶部
Transitioned into 'landing' libs.js:6215
Transition #0: TRANSITION COMPLETE. libs.js:6215
Uncaught TypeError: Cannot redefine property: name libs.js:6595
Ember.watchKey libs.js:6595
Ember.watch libs.js:7114
Ember.addObserver libs.js:8386
Ember.View.Ember.CoreView.extend.registerObserver libs.js:27048
simpleBind libs.js:30930
bindHelper libs.js:31030
(anonymous function) libs.js:30978
program1 templates.js:130
prog libs.js:475
Ember.View.Ember.CoreView.extend.render libs.js:26009
Ember.CoreView.Ember.Object.extend._renderToBuffer libs.js:24947
Ember.View.Ember.CoreView.extend._renderToBuffer libs.js:26578
superWrapper
下面的日志是我使用{{log partner}}通过控制台成功查看合作伙伴对象时得到的日志,您可以在Ember Inspector中看到7个合作伙伴对象。请理解出于隐私原因模糊实际姓名
Transitioned into 'landing' libs.js:6215
Transition #0: TRANSITION COMPLETE. libs.js:6215
Object {value: 0, name: "ASM", idx: 0} libs.js:6215
Object {value: 1, name: "Air Force", idx: 1} libs.js:6215
Object {value: 2, name: "Army", idx: 2} libs.js:6215
Object {value: 3, name: "Coast Guard", idx: 3} libs.js:6215
Object {value: 4, name: "Marines", idx: 4} libs.js:6215
Object {value: 5, name: "Navy", idx: 5} libs.js:6215
Object {value: 6, name: "Wives", idx: 6} libs.js:6215
您能否指导我如何/从何处开始调试此问题?我有足够的时间做这件事,如果你需要我的帮助,请告诉我。
谢谢。你试过这样写循环吗
{{#each model.partners}}
<li>
{{name}}
</li>
{{/each}}
{{{#每个模型.partners}
{{name}}
{{/每个}}
在每个块的侧面,
此
是正在循环的阵列中的模型。所以oyu可以编写它{{this.name}}
,但是this是被输入的,所以它可以被删除 我终于解决了这个问题
当我得到错误时,我在模型钩子中使用了以下代码
model: function() {
return new Ember.RSVP.Promise(function(resolve) {
...
// JSON data from the server
//{"userInfo":{"uid":0,"username":"","isRegistered":0,"email":""}, "partners":[{"value":0,"name":"ASM","idx":0},{"value":1,"name":....}...]}
var retObj = {'userInfo':userInfo,'partners':partners};
resolve(retObj);
...
});
},
我需要做的是在调用resolve(…)
之前克隆上面的retObj变量。
有关详细信息,请参见下面的代码
我认为,这是因为retObj
对象具有userInfo
变量作为对象类型,而合作伙伴作为数组类型,所以我不应该直接使用retObj
model: function() {
return new Ember.RSVP.Promise(function(resolve) {
...
// JSON data from the server
//{"userInfo":{"uid":0,"username":"","isRegistered":0,"email":""}, "partners":[{"value":0,"name":"ASM","idx":0},{"value":1,"name":....}...]}
var retObj = {'userInfo':userInfo,'partners':partners};
var newRetObj = jQuery.extend(true, {}, retObj);
resolve(newRetObj);
...
});
},
使用jQuery.extend()克隆retObj可以解决“UncaughtTypeError:无法重新定义属性:*”的错误
再次感谢所有在这个问题上帮助我的人,如果您认为我遗漏了什么,请随时发表更多评论。感谢您提前快速回复。不幸的是{{name}}和{{this.name}使用{{{#each model.partners}}的{{name}和{this.name}都不起作用。我的意思是,我仍然收到“无法重新定义属性:名称”错误。我想知道是谁在抱怨这个错误。在我看来,你有一个模型,其中有许多合作伙伴?如果这是合作伙伴模型,那么您可以这样做{{{each}}{{name}}{{/each}}
如果您想让我解释这个模式,请让我知道。让我解释我正在使用的模型对象。我可以通过Ember Inspector查看以下模型信息。Ember Inspector($E):对象{userInfo:Object,partners:(…),uuEmber1395345243022_meta:meta}正如您在这里看到的,此模型的partners属性包含许多partner对象。我真的被困在这里了。你能为用户和合作伙伴添加一份模型副本吗。我想知道您是如何设置模型之间的关系的。仅供参考,我没有使用“DS.model.extend”为该着陆路由器定义模型,而是使用“setupController”钩子在“着陆”路由器中设置模型,以使其在着陆模板中可用。这是模型的副本。{“userInfo”:{“uid”:0,“username”:“,”isRegistered:0,“email”:“},“partners”:[{“value”:0,“name”:“ASM”,“idx”:0},{“value”:1,“name”:“Air Force”,“idx”:1},{“value”:2,“name”:“Army”,“idx”:2},{“value”:3,“name”:“Coast Guard”,“idx”:3}}正如您所看到的,模型对象中没有任何关系。如果您需要更多信息,请随时告诉我。非常感谢。我认为(不确定)name
可能是一个受保护的变量名。尝试将其更改为partnerName
并查看是否有任何不同。我也尝试了{{model.userInfo.uuID}},但仍然得到“无法重新定义属性:uuID”。当我尝试{{log model.userInfo.uuID}}时,我可以通过控制台看到正确的值。
model: function() {
return new Ember.RSVP.Promise(function(resolve) {
...
// JSON data from the server
//{"userInfo":{"uid":0,"username":"","isRegistered":0,"email":""}, "partners":[{"value":0,"name":"ASM","idx":0},{"value":1,"name":....}...]}
var retObj = {'userInfo':userInfo,'partners':partners};
resolve(retObj);
...
});
},
model: function() {
return new Ember.RSVP.Promise(function(resolve) {
...
// JSON data from the server
//{"userInfo":{"uid":0,"username":"","isRegistered":0,"email":""}, "partners":[{"value":0,"name":"ASM","idx":0},{"value":1,"name":....}...]}
var retObj = {'userInfo':userInfo,'partners':partners};
var newRetObj = jQuery.extend(true, {}, retObj);
resolve(newRetObj);
...
});
},