Zastanawiam się nad próbą zainicjowania (części) modelu AngularJS z danych w kodzie HTML, zamiast wysyłania żądania do serwera w celu pobrania danych jako JSON lub osadzenia obiektu JSON bezpośrednio na stronie.AngularJS: Zainicjować model z danych w HTML?
(Serwer obecnie renderuje tylko dane w języku HTML (nie JSON), a ja chciałbym teraz uniknąć przepisywania "zbyt wiele" kodu, a HTML działa dobrze z wyszukiwarkami Sam wniosek jest dyskusją system.)
Oto przykład mojego HTML (uproszczony). Dane w nim zawarte to: identyfikator postu (123456), identyfikator autora (789), nazwisko autora (overlord Kitty) oraz wiadomość tekstowa ("Kocięta
Koty! Po prostu żartuję .
").
<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>
I chciałbym skonstruować angularjs kontrolera i zainicjować $scope
do czegoś podobnego:
$scope = {
postId = 123456,
authorId = 789,
text = 'Kittens ....',
}
Być może mogę użyć ng-init
tak:
<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>
ale potem Dwukrotnie wyśle dane: raz w ng-init
i raz w kodzie HTML. Myślę, że wolałbym jakoś pominąć atrybut ng-init
.
W każdym razie, czy to podejście w porządku?
Czy to nie jest możliwe/złe, a zamiast tego powinienem zrobić coś innego?
Czy istnieje sposób na uniknięcie dwukrotnego włączenia danych? (Zarówno w html, w ng-init
)
Dzięki za odpowiedź. To, co opisujesz, jest właściwie tym, co miałem na myśli, mówiąc o "osadzeniu obiektu JSON bezpośrednio na stronie". +1, ponieważ wydaje się, że wszyscy tak robią, więc może to naprawdę najlepsze podejście. I ze względu na pomocny link do twojego własnego pytania. - Ja * myślę * właściwie rozpoznaję tytuł twojego pytania, ale myślałem, że chodzi o coś innego, mianowicie o wstawienie danych * do * DOM, a nie "wyodrębnienie" z DOM. – KajMagnus
Cieszę się, jeśli to pomaga! (Tak, mój angielski jest daleki od doskonałości, więc niektóre niuanse mogą być niejasne, przepraszam) :-) – Cherniv