const rootVm = new Vue({
    el: '#app-sudoku',
    template: `
    <div>
    <span v-for="row in rows">{{ row }}<br /></span>
    </div>`,
    computed: {
        rows: function() {
            const splitAt = (array, n) => [array.slice(0, n), array.slice(n)];
            const rows = splitAt(Array.from(this.board).map(Number), 9);
            var p = rows;
            while (p[1].length !== 0) {
                p[1] = splitAt(p[1], 9);
                p = p[1];
            }
            const reduceConcat = a => a.length ? a.reduce((a, b) => [a].concat(reduceConcat(b))) : [];
            return reduceConcat(rows);
        },
    },
    data: () => new Object({
        board: '060003001200500600007090500000400090800000006010005000002010700004009003700200040',
    }),
});

@@ -101,42 +101,236 @@
 ws%22%3E
-%7B%7B row %7D%7D%3Cbr /%3E%3C/span%3E%0A    %3C/div%3E%60
+%3Cnumber-box v-for=%22n in row%22 :number=%22n%22 :key=%22n%22 /%3E%3Cbr /%3E%3C/span%3E%0A    %3C/div%3E%60,%0A    components: %7B%0A        'number-box': %7B%0A            props: %7B number: Number, %7D,%0A            template: '%3Cspan%3E%7B%7B number %7D%7D%3C/span%3E',%0A        %7D,%0A    %7D
 ,%0A  

Implement number-box base.