2016-01-27 1 views
2

http://plnkr.co/edit/0CAgXsX847n9LfIG4Fzj?p=previewнг-шоу не работает с нг-включают

У меня есть два файла: -index.html (При этом используется нг-включения - не работает) -index_embedded.html (использует тот же самый код, но без использования a include - WORKS)

Привет, моя проблема здесь, когда я нажимаю «CLICK ME», а затем нажимаю «CLOSE», а затем снова пытаюсь нажать «CLICK ME», он больше не работает.

Когда я использую тот же код без использования ng-include, я могу нажать «CLICK ME», «CLOSE», а затем снова «CLICK ME».

Почему это не работает, только когда код находится в включенном файле?

<h2 ng-click="asdf = !asdf">CLICK ME</h2> 

<!-- <div ng-include="'partials/audiencenav.html'"></div> --> 
<!-- extracted code from the include and pasted below, i'm able to successfully CLICK, CLOSE, and CLICK again --> 
<div class="" ng-show="asdf"> 
    <div ng-click="asdf = !asdf"><h2>CLOSE</h2></div> 
</div> 

Проблема заключается в том, что код используется во включенном файле, он прерывается после нажатия «ЗАКРЫТЬ».

ответ

4

Первый раз она наследующий значение ASDF от родителей до тех пор, пока не нажали на близко, как только вы нажали на ЗАКРЫТЬ это создает ASDF с локальной областью, которая больше не влияет на нажатие на CLICK ME, поэтому вы можете использовать $ parent.asdf в include-файле, который всегда будет ссылаться на родителя.

Пожалуйста, ознакомьтесь с новым plunker

<div class="" ng-show="$parent.asdf"> 
    <div ng-click="$parent.asdf = !$parent.asdf"><h2>CLOSE</h2></div> 
</div> 

http://plnkr.co/edit/9wmKTR8HPw54K95XqapA?p=preview

+0

Это очень помогло мне, да благословит ваши навыки кодирования – Vivek

+0

Спасибо, это работает! – coderaging

1

Я думаю, проблема связана с тем, что ng-include создает новую область видимости, а asdf скрывается локальной версией этой области.

Это хорошо известная проблема. Вы можете поместить переменные во внутреннюю структуру (например, изменить asdf на input.asdf и инициализировать ввод в {}) или (более продвинутый), использовать контроллер как конструкцию.

посмотреть здесь: https://stackoverflow.com/a/14146317/115198

1

Это потому, что с нг-включают в себя новый ребенке сфера создается в прилагаемом файл и внешняя сфера становится родительской областью видимости.

Таким образом, вы должны попробовать, как показано ниже в _include.html

<div class="" ng-show="$parent.asdf"> 
    <div ng-click="$parent.asdf = !$parent.asdf"><h2>CLOSE</h2></div> 
</div> 

Надеются, что это помогает!

+1

Полная копия моего ответа. –

+1

Я havent видел ур ответ мужчины ... Я видел это только после того, как я разместил его! –

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