首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >dom-repeat return me "Cannot read property 'apply‘of undefined“尝试在对象内显示数组时,dom-repeat返回”Cannot read property’apply‘of undefined“

dom-repeat return me "Cannot read property 'apply‘of undefined“尝试在对象内显示数组时,dom-repeat返回”Cannot read property’apply‘of undefined“
EN

Stack Overflow用户
提问于 2018-06-06 19:29:19
回答 1查看 331关注 0票数 0

在使用dom-repeat时,我在浏览器控制台中收到此错误:

无法读取未定义的属性“”apply“”

当我尝试在dom-repeat中显示对象内部的数组时,

代码是:

代码语言:javascript
复制
<link rel="import" href="../bower_components/polymer/polymer.html">

<dom-module id="hola-mundo">
    <style>
        h1{
            color: blue;
        }
    </style>

    <template>

        <button on-tap="test">myButton</button>             

        <template is="dom-repeat" items="{{myObject.parameters}}">
                <div>{{item.name}}</div>                
        </template>
    </template>
</dom-module>

<script>
    Polymer({
        is: "hola-mundo",
        properties: {
            myObject: {
                type:Object,
                value: {
                    parameters: {
                        type: Array,
                        value: []
                    },
                    color: {
                        type: String,
                        value: 'red'
                    }   
                }
            }

        },

        test: function(){
            this.push('myObject.parameters', { 'id': '1', 'name': 'test'});
        },      
    });
</script>

该数组必须位于对象内部

有人能纠正我的代码吗?我希望在这方面能帮上忙。

谢谢

更新1:

在这个堆栈溢出问题中,一个响应被选择为有效的,但它对我不起作用:

Polymer dom-repeat error parsing the array inside the object

代码语言:javascript
复制
<link rel="import" href="../bower_components/polymer/polymer.html">

<dom-module id="hola-mundo">
    <style>
        h1{
            color: blue;
        }
    </style>

    <template>

        <button on-tap="test">myButton</button>     
        <h1>Hola Mundo <span>{{nombre}}</span></h1>

        <template is="dom-repeat" items="{{rooms.ports}}">
                <div>{{item.portName}}</div>                
        </template>

    </template>
</dom-module>

<script>
    Polymer({
        is: "hola-mundo",
        properties: {
            rooms: {
                type: Array,
                value: [
                    {
                        name: "Room1",
                        maxPorts: 16,
                        ports: {
                            type: Array,
                            value: [

                            {portName: "Port 1",portStatus: "true"},
                            {portName: "Port 2",portStatus: "true"},
                            {portName: "Port 3",portStatus: "true"},
                            {portName: "Port 4",portStatus: "true"},
                            ]
                        }
                    }
                ]
            },

        },

        test: function(){
            this.push('rooms.ports', {portName: "Port 4",portStatus: "true"});
        },      
    });
</script>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-07 06:23:59

这一点:

代码语言:javascript
复制
properties: {
  myObject: {
    type: Object,
    value: {
      parameters: {
        type: Array,
        value: []
      },
      color: {
        type: String,
        value: 'red'
      } 
    }
  } 
}

是不起作用的,因为您试图“定义”parameterscolor,就好像它们是属性一样(实际上它们只是myObject值的一部分),但实际上您是在为对象文本赋值

代码语言:javascript
复制
{
  parameters: {
    type: Array,
    value: []
  },
  color: {
    type: String,
    value: 'red'
  } 
}

作为myObject属性的值。因此,本例中的myObject.parametersObject而不是Array,因此this.push失败。

尝试这样定义myObject

代码语言:javascript
复制
properties: {
  myObject: { // Define properties at this level only
    type: Object,
    value: {
      parameters: [], // Parameters is initially an empty array
      color: 'red',
    }
  } 
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50719323

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档