Я новичок в угловом, я прочитал пару статей по области и контроллерам, но я думаю, что до сих пор не понял.
Допустим, у нас есть код
var myApp = angular.module("myApp", []);
myApp.controller("myCtrl", function($scope) {
$scope.array = [1,2,3];
$scope.show = false;
$scope.toggle = function(){
$scope.show = !$scope.show;
console.log($scope.show);
};
});
и разметки:!.
<body ng-app="myApp">
<ul ng-controller="myCtrl">
<li ng-repeat="n in array">
<a href="#" ng-click="show = !show">Click here to show</a>
<span ng-show="show">Something to show</span>
</li>
</ul>
</body>
Все работает, когда я использую "нг-клик =" показать = шоу»в нг-шоу Но когда я использую toggle() insted, это не так. Мой вопрос в том, как изменить код, чтобы заставить метод toggle() работать? Как получить доступ к области действия, чем я работаю в контроллере? Должен ли я использовать ng-controller = "myCtrl" для каждого тега li? Должен ли я иметь контроллер для каждой области действия, созданной директивами в моей разметке? Какова наилучшая практика здесь?
Это один немного сложнее, потому что нг-повтор создает новую область для каждого повтора ребенка. Таким образом, переменная «show» в toggle будет родительской переменной, но «show» в вашем ng-show является дочерней переменной. –