Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/368.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
Javascript 了解组件和道具_Javascript_Vue.js - Fatal编程技术网

Javascript 了解组件和道具

Javascript 了解组件和道具,javascript,vue.js,Javascript,Vue.js,我搞不清楚如何使用组件和道具 更具体地说,我试图更新组件中的数据,并让它更改组件。我有一个组件模板遍历的对象数组。我想更改该数组,并将更改反映在组件中 以下是我的玩具示例: <html> <head> <script src="https://cdn.jsdelivr.net/vue/latest/vue.js"></script> <script src="assets/jquery-1.12.0.js"></s

我搞不清楚如何使用组件和道具

更具体地说,我试图更新组件中的数据,并让它更改组件。我有一个组件模板遍历的对象数组。我想更改该数组,并将更改反映在组件中

以下是我的玩具示例:

<html>
<head>
    <script src="https://cdn.jsdelivr.net/vue/latest/vue.js"></script>
    <script src="assets/jquery-1.12.0.js"></script>
</head>

<body>
    <div id="app">
        <input id="opp-list-input" v-model="opportunityListVals" type="hidden">
        <br>
        <opportunitylist v-bind:opp-list="opportunityListVals"></opportunitylist>
    </div>
    <script>
        new Vue({
            el: '#app',
            data: {
                opportunityListVals: [{name: 'First Opportunity'},{name: 'Second Opportunity'}]
            },
            components: {
                opportunitylist: {
                    props: ['oppList'],
                    template: '<ul>'
+ '<li v-for="opp in oppList">'
+ '{{opp.name}}'
+ '</li>'
+ '</ul>'
                }
            }
        });
        $('#opp-list-input').val([{name: 'Third Opportunity'}]);
        $("#opp-list-input").change();
    </script>
</body>
</html>


新Vue({ el:“#应用程序”, 数据:{ opportunityListVals:[{name:'First Opportunity'},{name:'Second Opportunity'}] }, 组成部分:{ 机会列表:{ 道具:['oppList'], 模板:“
    ” +“
  • ” +“{{opp.name}}” +“
  • ” +“
” } } }); $('opp list input').val([{name:'Third Opportunity'}]); $(“#opp列表输入”).change();
我试图最终只显示一个“第三次机会”行,尽管它是用两个不同的值初始化的

当我运行它时,它会给我重复的值警告,并显示许多空项目符号。我假设这意味着它没有按我预期的方式处理数组

就道具和组件而言,我是否走上了正确的轨道


有没有更好的方法来处理这个对象数组。通过输入元素发送它似乎很奇怪,但我看到的每个示例都是这样做的。

下面是组件的代码。您不需要使用v-bind,只需要使用
:oppList=“opportunityListVals”
将该数组从父级传递到子级。当父阵列更新时,子组件也将自动更新

您还需要使用
Vue.extend()
来创建子组件,而不仅仅是发送对象

<body>
<div id="app">
    <opportunitylist :oppList="opportunityListVals"></opportunitylist>
</div>
<script>
    new Vue({
        el: '#app',
        data: {
            opportunityListVals: [{name: 'First Opportunity'},{name: 'Second Opportunity'}]
        },
        components: {
            opportunitylist: Vue.extend({
                props: ['oppList'],
                template: '<ul>'
                    + '<li v-for="opp in oppList">'
                    + '{{opp.name}}'
                    + '</li>'
                    + '</ul>'
            })
        }
    });
</script>

新Vue({
el:“#应用程序”,
数据:{
opportunityListVals:[{name:'First Opportunity'},{name:'Second Opportunity'}]
},
组成部分:{
opportunitylist:Vue.extend({
道具:['oppList'],
模板:“
    ” +“
  • ” +“{{opp.name}}” +“
  • ” +“
” }) } });
我真的不明白你对输入和第三个值做了什么,所以在我提供输入之前,你必须澄清这一点