【问题标题】:How to bind a model inside a Vue compontent如何在 Vue 组件中绑定模型
【发布时间】:2017-07-08 15:06:36
【问题描述】:

我有这个 html

<div class="input-group checkbox-group">
    <checkbox class="checkbox text-red">
        <input v-model="remember" type="checkbox" name="remember" id="remember">
        <i v-if="!remember">@icon('checkbox-empty')</i>
        <i v-if="remember">@icon('checkbox-ticked')</i>
    </checkbox>
    <label for="remember">Remember me</label>
</div>

这是在 laravel 刀片模板中,@icon 是一个动态指令,将拉入 SVG,因此不能在组件上使用 template

这就是我的checkbox.js 的样子

Vue.component('checkbox', {

    data() {
        return {
             remember: false
        }
    },

    mounted() {
        console.log('mounted');
    }
});

但是,当页面加载时,控制台会转储出几个错误

[Vue warn]: Property or method "remember" is not defined on the instance but referenced during render. Make sure to declare reactive data properties in the data option. (found in root instance)

其中大约有 4 个出现,然后是一个

Failed to mount component: template or render function not defined

我假设最后一个是因为我使用的是内联 html 模板,而不是 JS?但是,我正在努力找出如何去做我想要的!

这段代码是从一个 AngularJS 应用程序迁移而来的,该应用程序非常简单

<span class="checkbox ng-cloak" data-ng-init="form.ticked = false">
    <input id="{{ $field }}" data-ng-model="form.ticked" value="ticked" type="checkbox" name="tos" required>
    <i data-ng-show="!form.ticked">@icon('checkbox-empty')</i>
    <i data-ng-show="form.ticked">@icon('checkbox-ticked')</i>
</span>

【问题讨论】:

    标签: javascript model components vue.js


    【解决方案1】:

    显然秘密就在“inline-template”属性中!

    <checkbox inline-template class="input-group checkbox-group">
        <div class="v-template">
            <span class="checkbox text-red">
                <input v-model="remember" type="checkbox" name="remember" id="remember">
                <i v-if="!remember">@icon('checkbox-empty')</i>
                <i v-if="remember">@icon('checkbox-ticked')</i>
            </span>
            <label for="remember">Remember me</label>
        </div>
    </checkbox>
    

    【讨论】:

    • 为什么不制作一个&lt;Checkbox&gt; 组件?它们是可重用和模块化的。
    • 出于我在第一篇关于动态刀片指令的帖子中所述的原因:)
    猜你喜欢
    • 1970-01-01
    • 2018-05-25
    • 2018-07-08
    • 2019-01-01
    • 2020-03-21
    • 1970-01-01
    • 2018-07-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多