0

Угловая Структурный Вопрос

Я новичок в angular.js, и я просто интересно, как идти о выполнении той или иной ситуации.Угловые Директивы Scope

Так в основном, то, что у меня есть контейнер:

<div ng-controller="ContainerController"> 
    <container></container> 
</div> 

И контроллер и директивы контейнера.

<script type="text/javascript" src="ContainerController.js"></script> 
<script type="text/javascript" src="ContainerDirectives.js"></script> 

Теперь директива заменяет <container> тег с примером HTML: <example>{{ data }}</example>

В настоящее время в рамках этого ContainerController я определенные данные в виде строки. (Это все примерные цели). Однако, когда директива обращения заменяет ее, она не может найти переменную из-за объема.

Причина, по которой это происходит, заключается в том, что область действия сценария ContainerDirective не находится в пределах области ContainerController. Это означает, что он не может получить доступ к переменной.

Я просто не уверен в том, что вы используете для подобных ситуаций. Где я могу разместить все, чтобы ContainerDirective мог получить доступ к области ContainerController.

Я надеюсь, что я объяснил все достаточно

EDIT хорошо:

Test.js

(function(){ 

    angular.module('test', []); 

})(); 

TestController.js

(function(){ 

angular 
    .module('test') 
    .controller('TestController', [ 
     '$scope', 
     TestController 
    ]); 

function TestController($scope) { 
    $scope.test = 'test'; 
} 

})(); 

TestDirective.js

(function(){ 

angular.module('test').directive('test', function() { 
    return { 
     replace: true, 
     templateUrl: 'src/test/view/test.html', 
     link: function (scope, element, attrs) { 

     } 
    }; 
}); 
})(); 

test.html

<example><a href="abc/{{test}}">ClickMe</a></example> 

index.html - тело

<body ng-app="App" layout="row" ng-controller="TestController as page"> 
<test></test> 

<script src="src/test/Test.js"></script> 
<script src="src/test/TestController.js"></script> 
<script src="src/test/TestDirective.js"></script> 


<script type="text/javascript"> 
    angular 
      .module('App', ['test']); 
</script> 
</body> 

По причинам, которые я переименованы некоторые переменные и удалены много данных, но это ядро, и я пытаясь увидеть что-то не так с этим.

Ошибка: [$ интерполировать: noconcat] Ошибка при интерполяции: а/{{испытание}} Строгих контекстная Escaping запрещает вставленное что сцепить несколько выражений, когда требуется доверенное значение.

+0

Читали угловые документы? директивы очень хорошо объяснены. –

+0

На самом деле я понял, что основное различие между моим кодом и кодом примера - это то, что я использую основной модуль, который включает дополнительный модуль. Этот дополнительный модуль содержит директиву. –

+1

Из вашего обновленного ответа вы не можете использовать 'ClickMe', но вместо этого вы должны использовать 'ClickMe' Если вы хотите получить подробную информацию о том, почему нужно проверить эту ссылку https://docs.angularjs.org/api/ng/directive/ngHref – AndersRehn

ответ

0

Возможно, прочитав эту статью, позволит решить многие ваши вопросы, я знаю, что он сделал для меня, когда я пытался понять директивы http://www.ng-newsletter.com/posts/directives.html

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

+0

Я только что понял, что мой модуль главной страницы. Модуль App включает модуль контейнера. Модуль контейнера - это тот, который содержит ContainerDirective. Может ли это повлиять на это в любом случае? –

+0

Предоставление большего количества кода поможет мне лучше понять ваши проблемы. Мне любопытно, как выглядит директива для вашего элемента контейнера, какие переменные он имеет и получает от других контроллеров. Возможно, вы могли бы предоставить плункер со всем своим кодом или обновлением, показывающим файлы js для контроллера и директив? – AndersRehn

+0

Я обновил basicaly, что содержит код, вместе с сообщением об ошибке, выделенным полужирным шрифтом внизу –

0

Итак, я понял, что было не так в конце. В основном угловое разрешение не допускает отпечатки iframe другого места, если вы не вначале:

  • Дайте им полный адрес.

  • Затем разрешить внешний URL как надежный веб-сайт.

Для этого я должен был в основном добавить: в Test.js

angular.module('test', []).config(function($sceDelegateProvider) { 
    $sceDelegateProvider.resourceUrlWhitelist($sceDelegateProvider.resourceUrlWhitelist().concat([ 
     'http://www.test.com/**' 
    ])); 
}); 

В основном это взял мой белый список и concatinated новый URL к нему.

Тогда внутри test.html:

<example><iframe ng-src={{src}}></iframe></example> 
Смежные вопросы