@@ -52,6 +52,52 @@ describe('ssr: v-model', () => {
5252 }"
5353 ` )
5454
55+ expect (
56+ compileWithWrapper (
57+ `<select v-model="model"><option v-for="i in items" :value="i"></option></select>` ,
58+ ) . code ,
59+ ) . toMatchInlineSnapshot ( `
60+ "const { ssrRenderAttr: _ssrRenderAttr, ssrIncludeBooleanAttr: _ssrIncludeBooleanAttr, ssrLooseContain: _ssrLooseContain, ssrLooseEqual: _ssrLooseEqual, ssrRenderAttrs: _ssrRenderAttrs, ssrRenderList: _ssrRenderList } = require("vue/server-renderer")
61+
62+ return function ssrRender(_ctx, _push, _parent, _attrs) {
63+ _push(\`<div\${_ssrRenderAttrs(_attrs)}><select><!--[-->\`)
64+ _ssrRenderList(_ctx.items, (i) => {
65+ _push(\`<option\${
66+ _ssrRenderAttr("value", i)
67+ }\${
68+ (_ssrIncludeBooleanAttr((Array.isArray(_ctx.model))
69+ ? _ssrLooseContain(_ctx.model, i)
70+ : _ssrLooseEqual(_ctx.model, i))) ? " selected" : ""
71+ }></option>\`)
72+ })
73+ _push(\`<!--]--></select></div>\`)
74+ }"
75+ ` )
76+
77+ expect (
78+ compileWithWrapper (
79+ `<select v-model="model"><option v-if="true" :value="i"></option></select>` ,
80+ ) . code ,
81+ ) . toMatchInlineSnapshot ( `
82+ "const { ssrRenderAttr: _ssrRenderAttr, ssrIncludeBooleanAttr: _ssrIncludeBooleanAttr, ssrLooseContain: _ssrLooseContain, ssrLooseEqual: _ssrLooseEqual, ssrRenderAttrs: _ssrRenderAttrs } = require("vue/server-renderer")
83+
84+ return function ssrRender(_ctx, _push, _parent, _attrs) {
85+ _push(\`<div\${_ssrRenderAttrs(_attrs)}><select>\`)
86+ if (true) {
87+ _push(\`<option\${
88+ _ssrRenderAttr("value", _ctx.i)
89+ }\${
90+ (_ssrIncludeBooleanAttr((Array.isArray(_ctx.model))
91+ ? _ssrLooseContain(_ctx.model, _ctx.i)
92+ : _ssrLooseEqual(_ctx.model, _ctx.i))) ? " selected" : ""
93+ }></option>\`)
94+ } else {
95+ _push(\`<!---->\`)
96+ }
97+ _push(\`</select></div>\`)
98+ }"
99+ ` )
100+
55101 expect (
56102 compileWithWrapper (
57103 `<select multiple v-model="model"><option value="1" selected></option><option value="2"></option></select>` ,
0 commit comments