Я думаю о попытке инициализировать (части) модели AngularJS из данных в HTML, вместо того, чтобы делать запрос на сервер для извлечения данных как JSON или встраивать объект JSON непосредственно на страницу.AngularJS: Инициализировать модель из данных в HTML?
(В настоящее время сервер отображает данные только в HTML (а не JSON), и я бы хотел избежать переписывания «слишком большого» кода прямо сейчас, а HTML хорошо работает с поисковыми системами. Приложение само по себе является дискуссией system.)
Далее следует пример моего HTML (упрощенного). Введенные в него данные - это идентификатор сообщения (123456), авторский идентификатор (789), имя автора (Kitty overlord) и текстовое сообщение («Котята
Кошки! Шутки.
«).
<div id="post-123456">
<div class="dw-p-hd">
By <span data-dw-u-id="789">Kitty overlord</span>
</div>
<div class="dw-p-bd">
<p>Kittens</p><p><strike>Cats! Just kidding.</strike></p>
</div>
</div>
И я хотел бы построить AngularJS контроллер, и инициализировать $scope
к чему-то вроде:
$scope = {
postId = 123456,
authorId = 789,
text = 'Kittens ....',
}
Возможно, я могу использовать ng-init
так:
<div id="post-123456"
ng-controller="CommentCtrl"
ng-init="{ postId =..., authorId =..., text =... }"> <--- look here
<div class="dw-p-hd">
By <span data-dw-u-id="789">Kitty overlord</span>
</div>
<div class="dw-p-bd">
<p>Kittens...</p>
</div>
</div>
Но тогда я 'd посылать данные дважды: один раз в ng-init
и один раз в HTML. Я думаю, что я бы скорее пропустил атрибут ng-init
.
В любом случае, как вы думаете, это хороший подход?
Или это невозможно/плохо, и я должен сделать что-то еще вместо этого?
Есть ли способ избежать включения данных дважды? (Как в HTML, так и в ng-init
)
Спасибо за ваш ответ. То, что вы описали, на самом деле означает то, что я имел в виду с «встроить объект JSON непосредственно на страницу». +1, потому что это похоже на то, что все делают, поэтому, возможно, это лучший подход. И из-за полезной ссылки на ваш собственный вопрос. - Я * думаю * Я знаю название вашего вопроса на самом деле, но я думал, что это о чем-то другом, а именно о том, что данные вставляются * в * DOM, а не «извлекаются» из DOM. – KajMagnus
рад, если это поможет! (да, мой английский далеко не идеален, поэтому некоторые нюансы могут быть неясными, извините) :-) – Cherniv