【发布时间】:2016-05-14 20:41:38
【问题描述】:
我是 javascript 和 Polymer 的初学者:我需要在我的自定义对象中使用本机聚合物推送方法,但它给了我浏览器:
“未捕获的类型错误:无法读取未定义的属性 'length'”
这是我的代码的简化版本:
<link rel='import' href='bower_components/polymer/polymer.html'>
<dom-module id='random-tag'>
<template>
<template is='dom-repeat' items='[[MyObject.getArray()]]'>
<div>
<h2>[[item.id]]</h2>
</div>
</template>
</template>
<script>
Polymer({
is: 'random-tag',
properties: {
MyObject: {
type: Object
}
},
MyObject2: function(){
var myArray = [];
var idMap = {};
this.getArray = function(){
return this.myArray
};
this.add = function(element){
//The problem is here: probably Polymer don't see 'myArray'
//in MyObject2 because the path is wrong
Polymer.Base.push('myArray', element)
idMap[element.id] = myArray.length
};
this.getIndex = function(id){
return idMap[id]
}
},
ready: function(){
this.MyObject = new this.MyObject2()
this.MyObject.add({id : 'thing1'})
console.log('thing1 has index: ' + this.MyObject.getIndex('thing1'))
}
});
</script>
</dom-module>
【问题讨论】:
-
@GünterZöchbauer 感谢您的回复,很遗憾由于 SyntaxError: Unexpected identifier 而无法正常工作。但是,将 var 放入准备好的函数中,我得到相同的错误 Uncaught TypeError: Cannot read property 'length' of undefined.
标签: javascript object polymer push polymer-1.0