@@ -166,6 +166,62 @@ describe('ssr: v-model', () => {
166
166
_push(\`</optgroup></select></div>\`)
167
167
}"
168
168
` )
169
+
170
+ expect (
171
+ compileWithWrapper ( `
172
+ <select multiple v-model="model">
173
+ <optgroup>
174
+ <option v-for="item in items" :value="item">{{item}}</option>
175
+ </optgroup>
176
+ </select>` ) . code ,
177
+ ) . toMatchInlineSnapshot ( `
178
+ "const { ssrRenderAttr: _ssrRenderAttr, ssrIncludeBooleanAttr: _ssrIncludeBooleanAttr, ssrLooseContain: _ssrLooseContain, ssrLooseEqual: _ssrLooseEqual, ssrRenderAttrs: _ssrRenderAttrs, ssrInterpolate: _ssrInterpolate, ssrRenderList: _ssrRenderList } = require("vue/server-renderer")
179
+
180
+ return function ssrRender(_ctx, _push, _parent, _attrs) {
181
+ _push(\`<div\${_ssrRenderAttrs(_attrs)}><select multiple><optgroup><!--[-->\`)
182
+ _ssrRenderList(_ctx.items, (item) => {
183
+ _push(\`<option\${
184
+ _ssrRenderAttr("value", item)
185
+ }\${
186
+ (_ssrIncludeBooleanAttr((Array.isArray(_ctx.model))
187
+ ? _ssrLooseContain(_ctx.model, item)
188
+ : _ssrLooseEqual(_ctx.model, item))) ? " selected" : ""
189
+ }>\${
190
+ _ssrInterpolate(item)
191
+ }</option>\`)
192
+ })
193
+ _push(\`<!--]--></optgroup></select></div>\`)
194
+ }"
195
+ ` )
196
+
197
+ expect (
198
+ compileWithWrapper ( `
199
+ <select multiple v-model="model">
200
+ <optgroup>
201
+ <option v-if="true" :value="item">{{item}}</option>
202
+ </optgroup>
203
+ </select>` ) . code ,
204
+ ) . toMatchInlineSnapshot ( `
205
+ "const { ssrRenderAttr: _ssrRenderAttr, ssrIncludeBooleanAttr: _ssrIncludeBooleanAttr, ssrLooseContain: _ssrLooseContain, ssrLooseEqual: _ssrLooseEqual, ssrRenderAttrs: _ssrRenderAttrs, ssrInterpolate: _ssrInterpolate } = require("vue/server-renderer")
206
+
207
+ return function ssrRender(_ctx, _push, _parent, _attrs) {
208
+ _push(\`<div\${_ssrRenderAttrs(_attrs)}><select multiple><optgroup>\`)
209
+ if (true) {
210
+ _push(\`<option\${
211
+ _ssrRenderAttr("value", _ctx.item)
212
+ }\${
213
+ (_ssrIncludeBooleanAttr((Array.isArray(_ctx.model))
214
+ ? _ssrLooseContain(_ctx.model, _ctx.item)
215
+ : _ssrLooseEqual(_ctx.model, _ctx.item))) ? " selected" : ""
216
+ }>\${
217
+ _ssrInterpolate(_ctx.item)
218
+ }</option>\`)
219
+ } else {
220
+ _push(\`<!---->\`)
221
+ }
222
+ _push(\`</optgroup></select></div>\`)
223
+ }"
224
+ ` )
169
225
} )
170
226
171
227
test ( '<input type="radio">' , ( ) => {
0 commit comments