Answer a question

I've read answers such as this but can't get my template to compile.

I need to concatenate a string with a var in v-model to bind to an array inside an object:

<li v-for="name in names">
    <input type="checkbox" v-model="'checked.'+name">
    ....

I just get a compile error though.

Also when I do this:

:data-test="'checked.'+name"

It compiles fine, so its something with v-model.

The compile error is:

Syntax Error: SyntaxError: Unexpected token (1:1161)

Answers

Just in case a slightly different perspective helps: Whether you use it in a v-model or :data-test directive

'checked.'+name

results in a string. Although it probably isn't what one would normally want to do, that is syntactically legal for an arbitrary v-bind (e.g. :data-test). That is not, however, syntactically legal for a v-model. As other have pointed out, v-model attempts to assign a value on "change" events. It would be equivalent, for example, to

'checked.foo' = true;

when what I think you want is

checked.foo = true;

It's hard to say for sure without seeing more of your code, but it may be the case that

<input type="checkbox" v-model="checked[name]">

is sufficient for you.

Logo

Vue社区为您提供最前沿的新闻资讯和知识内容

更多推荐