Ваша проблема известна в javascript мире как «точка». Идея заключается в том, что в javascript собственные значения передаются по значению, тогда как значения объектов передаются по ссылке. Попробуйте изменить ваш взгляд на это:
<div id="callFunction" ng-click="myFunction()">...</div>
<div id="contactInfo" ng-show="content.Show">...</div>
и изменить свой контроллер:
$scope.content.Show = false;
$scope.myFunction = function() {
$scope.content.Show = true;
}
Причина это будет работать, потому что вы теперь передавая объект вокруг и манипулировать объектом, а не просто манипулировать ценность. По существу, подумайте об этом как о проблеме «под-видимости», где ваш «div» порождает собственную область видимости, поэтому переменная, на которую вы ссылаетесь, является родным, она передает значение. Поэтому функция обновляет родительское значение, но не дочернее значение.
Для получения дополнительной информации: http://jimhoskins.com/2012/12/14/nested-scopes-in-angularjs.html
вы можете забыть о контроллере и сделать все это в вашем HTML: '' 'нг-нажмите MyVar = '= myvar''''. Возможно, это решение, потому что вы не используете/scope/controller? – Silom
Нет ничего плохого в этом коде, это должно быть что-то еще, что вызывает проблему. Проверьте консоль браузера на наличие ошибок, также установите точку останова на функцию и убедитесь, что она нажата, когда вы нажимаете div – Neil
, можете ли вы произвести ошибку на скрипке plunker и т. Д.? –