Угловой сферу
В веб -приложениях, построенных с помощью угловых, концепция масштаба на протяжении всего этого. Многие инструкции в угловом представлении создадут область применения, такую как NG-APP, NG-Контроллер и т. Д. Эта область- $scope (версия перед Angular1.2), мы вводим при написании конструкторов контроллера. Это концепция в модели зрения. Наша модель данных определяется в области масштаба.
Угловая яма
Люди, которые использовали Angular, должны пройти через процесс, то есть, когда они были новичком в начале, они просто видели двустороннее связывание данных.
Яма с прицелом 1 в угловой
Независимо от того, как он начал использовать его напрямую, он связывал бы его за один раз. После привязки, если вам повезет (старая птица, которая понимает принцип угловой области, игнорирует его), то двустороннее привязка начнет работать, как и ожидалось. В настоящее время мы также чувствуем, что мы настолько сильны, что мы можем так быстро реализовать «двустороннее привязка», что является новой функцией, о которой не слышали.
Так почему же выше говорится, что двусторонняя переплета работает должным образом из-за удачи? Потому что, когда новички впервые начали изучать угловой, они просто прочитали учебное пособие и изменили код для удовлетворения своих потребностей бизнеса. Даже если есть некоторые игроки, которые могут изучать официальные документы в начале, они все еще меньшинство. Поэтому большинство друзей, которые только что изучили Angular, на самом деле не понимают принципы, но они думают, что уже знают, как их использовать.
Сказав так много, давайте посмотрим на ситуацию, когда начинающий начинает указывать модель данных в области и связывать ее в двусторонних направлениях. В этом случае вы столкнетесь с упомянутой выше ловушки. Давайте сначала посмотрим на код.
// html <div ng-controller = "outterctrl"> <span ng-bind = "a"> </span> <div ng-controller = "innerctrl"> <span ng-bind = "a"> </span> <buttonc ng-click = "a = a+1"> Increment </button> </div> </div>/javincrcip OUTERCTRL ($ SCOPE) {$ scope.a = 1;} функция innerctrl () {}Приведенный выше код является чрезвычайно простым примером двустороннего привязки. После того, как страница загружена, 1 будет отображаться во внешнем DIV и внутреннем Div. Когда кнопка «Приращение» нажимается, вы обнаружите, что только внутренний 1 становится 2. То же самое относится и к продолжению нажатия, только внутреннее число увеличится. Так что в это время новички часто паникуют. А как насчет волшебного двустороннего переплета, которое было согласовано?
Яма 2 в угловой
В это время ребенок был немного эмоциональным. Он поднялся на stackoverflow и официальные документы. Наконец, он обнаружил, что действительно было решение, например, написание data.a атрибута. А объекта:
// html <div ng-controller = "outterctrl"> <span ng-bind = "data.a"> </span> <div ng-controller = "innerctrl"> <span ng-bind = "data.a"> </span> <button ng-click = "Data.a = 1"> jurmer </rupture> </span> </ng-click = javfcuret. OUTERCTRL ($ SCOPE) {$ scope.data = {a: 1};} функция innerctrl () {}Затем я обнаружил, что это может работать, и оба числа были увеличены. Я был королем двустороннего переплета ... а затем я отбросил его в сторону и продолжал изучать следующую часть учебника, не заботясь о конкретных принципах. Это на самом деле мое умственное путешествие, когда я впервые выучил угловой. Мне было очень стыдно выполнять приложение и развернуть его в производственной среде, прежде чем я вспомнил, чтобы изучить внутренние принципы.
Яма всегда должна быть заполнена
Я сказал так много чушь, и я наступил на яму. Я вошел на стадию заполнения ямы, что означает, что эта яма может быть решена атрибутами, написанными как объекты. На самом деле, зная принцип, его легко понять. Внутренняя и внешняя область углового унаследована цепочкой прототипа на основе JavaScript, и используется только метод наследования прототипа цепи. Друзья с некоторыми основаниями JavaScript должны быть в состоянии мгновенно реагировать. Значение типа ссылки в объекте прототипа подкласса и значение типа ссылки в объекте родительского экземпляра-это одно и то же ссылка, а значение основного типа будет перезаписать значение основного типа в родительском объекте. Это на самом деле является причиной существования комбинации наследования, потому что использование только наследования цепочки прототипа приведет к проблеме апелляции, которая немного далеко идущей.
Короче говоря, здесь мы можем посмотреть на первый пример следующим образом:
function outterctrl () {this.a = 1;} function innerctrl () {} var outter = new outterctrl (); innerctrl.prototype = uper; var inner = new innerctrl (); inner.a = inner.a + 1; Здесь мы устанавливаем объект прототипа конструктора внутреннего контроллера на внешний объект сфера, чтобы сгенерированный объект внутреннего объема наследивал свойство A во внешней внешней объекте. Это свойство является базовым значением типа. При доступе к свойству A внутреннего объекта, поскольку сам внутренний объект не имеет таких атрибутов, он будет искать из своего прототипа объекта. Существует такой атрибут во внешнем объекте прототипа, поэтому возвращаемое значение не является проблемой, но если мы присвоим значение свойству A объекта внутреннего объема, проблема возникнет. inner.a = inner.a + 1; Это утверждение фактически передает процесс, упомянутый выше, чтобы найти значение свойства A, а затем присваивает возвращаемое значение свойству A объекта внутреннего объема. Поскольку свойство A не существует, создается свойство базового типа A, блокирующее свойство A во внешнем объекте Outter Scope, и эта яма выходит.
Поэтому, если мы заменим атрибут значения основного типа на атрибут значения типа ссылки, проблема может быть решена, поскольку соответствующие атрибуты двух объектов являются одним и тем же значением типа ссылки, и независимо от того, где она изменена, это будет отражено на всех объектах, которые ссылаются на него.
Суммировать
Вышеуказанное посвящено подводным камням, на которые необходимо обратить внимание на Angular. Я надеюсь, что содержание этой статьи будет полезным для всех, чтобы узнать о сфере в угловом.