2014-10-21 3 views
0

Я пытаюсь понять основные принципы, связанные с следующими вопросами:Angular.js: шаблоны и данные обработок между видами

  • Шаблонов
  • Обработки данных
  • $ ресурса против $ HTTP

Как я вижу, я хотел бы реализовать несколько представлений в моем приложении, которые разделяют несколько шаблонов html, а также предоставляют некоторые данные. для упрощения моей проблемы я опишу сценарий, который почти эквивалентен. enter image description here

как вы можете видеть, есть 2 вида (хотя будет больше!), Которые используют 3 html-разметки, в то время как один из них является общим в обоих представлениях (GeneralInfo). Кроме того, оба представления совместно используют данные, которые обычно создаются при использовании одного из контроллеров представления.

  1. Какой принцип углового следует использовать для обеспечения того, чтобы при изменении маршрута я мог хранить свои данные между представлениями.
    • Должен ли я использовать app.value ('myVal', ..), которая является глобальной переменной?
    • Должен ли я передавать его как сервис всем моим контроллерам?
  2. Более технически, как мне реализовать тот же html в обоих представлениях? мог бы это привести?
    • Каким образом представление с его разметкой содержит 2 шаблона и как и когда оно отображается?
  3. В чем разница между $ resource и $ http и при использовании каждого shouold?
+0

1. В зависимости от типа данных, которые вы пытаетесь сохранить. Если это больше похоже на строку, значение константы должно быть прекрасным, если оно больше похоже на объект с функциями на нем, поэтому здесь нужна услуга. Вы можете написать закрытие, которое будет содержать свойства, такие как getUser(), isLoggedIn() и т. Д. 2. Вы можете даже сузить до одного вида. сохранить общую информацию об объеме, а небо - это предел. вы могли бы даже нас переключить сюда. 3. $ resource предназначен для REST APIS, его легче контролировать, поскольку вы отправляете разные запросы на одном ресурсе.$ http создает регулярные запросы AJAX.helped. – Linial

+0

1. Так что я предполагаю, что это либо служба, либо глобальная переменная (которая здесь не подходит), я думал, что есть еще один способ сделать это. в отношении 2: я хотел знать технически, как я должен загружать эти html-шаблоны (по директивам?). Кроме того, я не получил ваш точечный бой, сужая его до одного вида, generalInfo - это html, как он связан с областью? – Popokoko

+0

1. точно, регистрация сервиса | factory | provider означает регистрацию singelton, которая будет доступна в любом месте, которое вы выбираете в приложении. вы должны объявить зависимость. 2. По моей вине есть небольшое недоразумение. Форма входа в систему и общая информация на одной странице или на разных страницах? Теперь я немного смущен. – Linial

ответ

0

1) должен использовать Службу для обмена данными между контроллерами. технически вы можете прикрепить значения на $ rootScope, и это будет видно на разных контроллерах, но это считается плохой формой и может вызвать проблемы позже (например, с использованием глобальных переменных), может иметь непредвиденные побочные эффекты, поскольку проект растет, если кто-то случайно присоединяет противоречивое значение).

2) не совсем точно, что вы здесь просите. вы можете загрузить частичное на основе данного маршрута/состояния (используя ngRoute или ui-router). два разных маршрута могут использовать один и тот же generalInfo.html частично, но с разными данными, которые вытягиваются в соответствующие контроллеры. это то, что вы спрашиваете?

3) $ resource - это абстракция $ http - если вы извлекаете данные с сервера REST, $ resource может быть лучше подходит, поскольку он абстрагирует немного необходимой проводки. однако, если сервер слишком сильно отличается от традиционных принципов REST или вообще не является REST, вы можете просто свернуть свой собственный доступ к данным напрямую с помощью $ http. Конечно, если это REST и более сложный, также рассмотрите restangular - это более богатая абстракция.

+0

1. Я старался избегать глобальных варсов, поэтому я получаю вашу мысль. Я полагаю, что rootScope также является глобальным переменным только под этим элементом? 2. Я проверил как ngRoute, так и ui-router, мое первое впечатление заключалось в том, что ui-router дает больше возможностей и имеет больше информации в Интернете, исправьте меня, если я ошибаюсь? То, что я хотел достичь, - это простая загрузка html-шаблона в двух разных представлениях, и вы можете вызвать его, используя 2 подвыбора в одном представлении (должен ли я делать это с директивами?) 3. Я предполагаю, что работа с WebApi будет соответствовать $ resource Больше? – Popokoko

+0

(1) все прикрепленные к $ rootScope будут доступны всем дочерним областям через прототипическое наследование. (2) ngRoute является оригинальным маршрутизатором для AngularJS; в то время как ui-router является более функциональной альтернативой, позволяя такие вещи, как вложенные маршруты. либо один должен быть в состоянии легко справиться с плоским примером, который вы указали. (3) Не знаком с WebApi, поэтому я не уверен. $ resource дает вам небольшую абстракцию, но использование $ http также простое. Не совсем «правильный ответ». Я нашел $ http, чтобы быть проще _slightly_, чтобы узнать изначально, и $ resource _slightly_ более компактный/поддерживаемый более длительный срок. – Mike

+0

в ответе на комментарий (1), я не учитываю выделенные области. они только наследуют то, что вы конкретно называете. не упомянул об этом для простоты. – Mike

Смежные вопросы