Можно ли научить Angular брать дефолтные значения со страницы?

Ангулар - приятная штука, но часто требуется поддержка работы без js.

Сейчас в руки на доработку попался проектик, типичный блок выглядит так:
<article data-ng-bind="article.text" data-ng-init="article.text='{{ object.text }}'">{{ object.text }}</article>

<input type="text" data-ng-model="article.name" data-ng-init="article.name='{{ form.instance.name }}'" value="{{ form.instance.name }}">

(не смущайтесь скобкам, это шаблонизатор django, у ангулара {$ $})

Т.е. страница просто загружается с данными - она доступна и поисковикам и людям без js. Но мне это кажется некрасивым. Во первых дублирование данных - и вес растет, и ошибиться можно. Во вторых, периодически всё ломается, из-за содержимого data-ng-init - какие-нибудь кавычки и всему конец (для этого там куча фильров экранирующих разные типы значений - для текста, массивов, булов).

Можно ли научить angular такому:
<article data-ng-bind="article.text">{{ object.text }}</article>

<input data-ng-model="article.name" value="{{ form.instance.name }}">

Что бы он после закгрузки сам брал и записывал себе в article.text содержимое тега, с которым связан?
  • Вопрос задан
  • 2590 просмотров
Пригласить эксперта
Ответы на вопрос 1
kamilgarey
@kamilgarey
Вы пытаетесь найти реализацию решения, которое как разрешение проблемы страницы без JS -"кривое".

Понимаете JS МV* как раз и предназначены для того, что-бы не собирать данные со страницы, как это делают обычно с применением jQuery, абстрагироваться от представлений данных и сосредоточиться на логике. Поэтому если даже нужное вам решение есть - это по сути костыли.

Есть более красивое и функциональное решение для вашей проблемы. Для случаев когда нужно выдавать страницы без JS используют прокси, который делает работу браузера по отображению. Например, PhantomJS.

Для поддержки поисковиков будут полезны следующие ссылки:
SEO for single page applications - Backbone.js Tut...
Getting Started - Webmasters — Google Developers
Индексирование AJAX-сайтов — Яндекс.Помощь. Вебмастер
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы