2016-04-09 4 views
0

Я изучаю угловой, и я из фона jQuery и сталкиваюсь с проблемой, чтобы справиться с угловым. поэтому я часто спотыкаюсь, чтобы понять многие вещи в угловом коде.Что касается области внутри директивы в AngularJS

Только что просмотренный код ниже, и я не понимаю, что делает в нижеследующих директивах?

Но если я удалю область действия ниже директивы, тогда что не будет работать? , поэтому, пожалуйста, помогите мне понять использование сферы действия и ее важность с примером, если это возможно. Благодаря

<li my-directive price="item.price" ng-repeat="item in products">{{item.name}} &mdash; {{item.price}}</li> 

    myApp.directive('myDirective', function(){ 
     return { 
     scope: { price: '=' }, 
     require: 'ngModel', 
     link : function(scope){ 
      console.log(scope.price) 
     }, 
     controller: function(scope, element, attrs, ngModel){ 
      console.log(ngModel.price); 
      console.log(scope.price); 
     } 
     } 
    }); 
+0

Я настоятельно рекомендую вам прочитать [угловые документы] (https://docs.angularjs.org/guide/scope), это уже хорошо объяснено. –

ответ

1

В этом образце у вас есть scope: { price: '=' }, утверждает, что внутренняя сфера переменной price директивы точно переплетена размаху родителей. Он имеет к нему доступ, и я изменяю изменения в родительской области, значение директивы price также изменится.

Удалите эту строку из своей директивы scope: { ... }, а затем ваша директива не создаст новую область. Но он все равно будет работать - это означает, что он не создаст ошибку. Существуют случаи, когда вам нужно или не нужно иметь isolated scopes.

Чтобы выяснить, лучше, как вещи работают с угловыми и областями - пожалуйста, проверьте следующие большие ресурсы:

  1. угловых против JQuery - "Thinking in AngularJS" if I have a jQuery background?
  2. самого $ сфера в угловом - How does data binding work in AngularJS?
  3. различного типы переменных сферы действия в директивах - What is the difference between '@' and '=' in directive scope in AngularJS?
0

Если вы не укажете объект конфигурации области, который будет использовать ваша директива, это область родителя, но когда вы укажете объект области, он создает свою собственную изолированную область.

Поэтому, если вы не указали объект области, у вас будет доступ к переменным из вашего родительского контроллера напрямую.

исх: http://www.undefinednull.com/2014/02/11/mastering-the-scope-of-a-directive-in-angularjs/

+0

, когда в директиве требуется изолированный объем? ищем правильный примерный код, который объясняет важность изолированного объема. – Mou

+0

, если мы изменим значение в изолированной области, тогда изменения будут отражены в области контроллера? – Mou

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