Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.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
Ember.js 无法访问模型对象的属性,错误为“0”;无法重新定义属性:name";在余烬把手模板中_Ember.js_Handlebars.js - Fatal编程技术网

Ember.js 无法访问模型对象的属性,错误为“0”;无法重新定义属性:name";在余烬把手模板中

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

在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: ------------------------------- 


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);
                     ...
                    });                    
    },