Прочитать все привязки элементов из шаблона Vue - PullRequest
0 голосов
/ 10 мая 2019

Я пытаюсь предварительно обработать шаблон Vue 2 и получить список всех привязок элементов.Поэтому, если у меня есть файл, подобный следующему:

<html>
<body>
<div id="app">
    <p>Here's a message: {{message1}}</p>
    <p>Here's an input: <input type="text" v-model="message2"></p>
</div>

<script type="application/javascript" src="vue.js"></script>
<script type="application/javascript">
    new Vue({
        el: "#app",
        data: {
            message1: "foo",
            message2: "bar"
        }
    });
</script>
</body>
</html>

Тогда где-то (перед количеством?) Я мог бы запросить Vue, и он сказал бы, что привязки являются ['message1', 'message2'].Это возможно?

1 Ответ

0 голосов
/ 11 мая 2019

В итоге я решил эту проблему, получив текст функции рендеринга (вызвав vm. $ Options.render.toString ()), а затем проанализировав привязки.

Например, функция рендеринга для простого представления списка выглядит следующим образом:

function() {
  var _vm = this
  var _h = _vm.$createElement
  var _c = _vm._self._c || _h
  return _c(
    "table",
    { attrs: { border: "1", cellpadding: "5", cellspacing: "0" } },
    [
      _vm._m(0),
      _vm._l(_vm.rows, function(row) {
        return _c("tr", [
          _c(
            "td",
            [
              _c("router-link", { attrs: { to: "/detail/" + row.ID } }, [
                _vm._v(_vm._s(_vm._f("truncate")(row.TITLE, 100)))
              ])
            ],
            1
          ),
          _c("td", [_vm._v(_vm._s(_vm._f("truncate")(row.DESCRIPTION, 200)))]),
          _c("td", [_vm._v(_vm._s(row.TYPE))])
        ])
      })
    ],
    2
  )
}

Похоже, что привязки всегда содержатся в элементе _s () и, необязательно, в инструкции vm.f () при использовании фильтров.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...