0

首先我是 vue.js 的新手。

当用户单击项目预览组件中的扩展锚标记时,我正在尝试做什么,项目详细信息将显示并且项目预览将被隐藏。现在,当显示项目预览并且我试图通过单击其自己的扩展器锚标记来切换它时,就会出现问题。我不知道这有什么问题。

这是我的 HTML 模板。

    <script type="text/x-template" id="grid">
    <div class="model item" v-for="entry in data">
        <item-preview v-bind:entry="entry" v-if="entry.hide == 0">
        </item-preview>
        <item-details v-bind:entry="entry" v-if="entry.hide == 1">
        </item-details>
    </div>
</script>

<script type="text/x-template" id="item-preview">
        <header class="preview">
            <a class="expander" tabindex="-1" v-on:click="toggle(entry)"></a>
            <span class="name rds_markup">
                {{ entry.name }}
            </span>
        </header>
</script>


<script type="text/x-template" id="item-details">
    <div class="edit details">
        <section class="edit" tabindex="-1">
            <form action="#">
                <fieldset class="item name">
                    <a class="expander"  v-on:click="toggle(entry)"></a>
                    {{ entry.name }}
                </fieldset>
            </form>
        </section>
    </div>
</script>

在这里,我如何在我的视图中调用网格组件。

<grid
    :data="packages">
</grid>

对于我的 Vue 实现

var itemPreview = Vue.component('item-preview',{
    'template':"#item-preview",
    'props':{
        entry:Object
    },
    methods:{
        toggle:function(entry){
            entry.hide = !!entry.hide;
            return true;
        }
    }
});

var itemDetails = Vue.component('item-details',{
    'template':"#item-details",
    'props':{
        entry:Object
    },
    methods:{
        toggle:function(entry){
            entry.hide = !!entry.hide;
            return true;
        }
    }
});

var grid = Vue.component('grid',{
    'template':"#grid",
    'props':{
        data:Array,
    },
    components:{
        'item-preview': itemPreview,
        'item-details': itemDetails
    },
    methods:{
        toggle:function(entry){
            entry.hide = !!entry.hide;
            return true;
        }
    }
});




var vm = new Vue({
    el:'#app',
    data:{
        message:'Hello',
        packages:{}
    },

    ready:function(){
        this.fetchPackages();
    },

    methods:{
        fetchPackages:function(){
            this.$http.get(url1,function( response ){
                this.$set('packages',response);
            });
        },

    }

});
4

1 回答 1

0

傻我。我花了 30 分钟才弄清楚这段代码有什么问题。

我为解决此问题所做的不是 在 item-preview 组件和 item-details 中entry.hide = !!entry.hide;使用。这解决了我的问题。entry.hide = trueentry.hide = false

于 2016-04-22T07:05:18.313 回答