Может область действия директивы, когда false создает новые объекты и функции. - PullRequest
0 голосов
/ 29 августа 2018

Я немного новичок в этой директиве в Angularjs.

При просмотре областей действия в директивах я обнаружил, что они могут быть объявлены в трех формах: scope: false(shared scope), scope: true(inherited scope), scope: {}(isolated scope).

.directive('smsDownloadSampleFile',function() {
  return {
    restrict: 'E',
    scope: false,
    template: '<input type="button" class="btn cur-p btn-info pull-right" value="Download Sample Upload File" ng-click="getSampleFile()">',
    link: function(scope,element,attr) {

      scope.getSampleFile=function() {
        // console.log("Getting sample file on");
      }

      DS=$scope;
    }
  }
})

Итак, я создал эту директиву, но я не могу получить доступ к этому методу getSampleFile в родительской области видимости. Насколько я понял, когда scope=false, тогда он не создает новую область, а разделяет родительскую область. Если так, то почему я не могу получить доступ к этому методу в родительской области.

Пожалуйста, помогите мне избавиться от этого сомнения и узнать что-то новое.

1 Ответ

0 голосов
/ 29 августа 2018

С scope: false директива получает тот же объект области видимости, что и родительский объект. Таким образом, вы перезаписываете функцию родительского элемента, когда выполняете:

scope.getSampleFile=function() { ... }

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

...