У меня есть многостраничное веб-приложение AngularJS, которое служит панелью аналитики. В настоящее время я использую $ scope для создания переменных, чтобы динамически отображать некоторые данные на страницах HTML. Вместо того, чтобы создавать переменные $ scope, которые будут глобальными, независимо от того, какая страница посетит пользователь, я хотел бы ограничить переменные только их страницей и их страницей. Поскольку я новичок в Angular, я понятия не имею, как это сделать. Любые идеи о том, что я могу сделать?
ответ
$ переменные области не являются глобальными; они специфичны для контроллера. Если вам нужны переменные, специфичные для каждой страницы, поместите контроллер на каждую страницу (и не добавляйте контроллер в родительский элемент, так как его область наследуется).
Создайте отдельный контроллер для каждой страницы. $ scope в nt global. Его объем ограничивается контроллером
Ваш $scope
базируется на контроллере, так, чтобы сделать вещи, специфичные для страницы сделать что-то вроде этого:
var app = angular.module('app', []);
app.controller('pageOne', ['$scope', function ($scope) {
$scope.forThis = "value for page one controller";
}]);
app.controller('pageTwo', ['$scope', function ($scope) {
$scope.forThis = "value for page two controller";
}]);
Да, вам нужно вызвать синтаксис controllerAs. Независимо от того, выполняете ли вы это в своей маршрутизации или в своих HTML-элементах, это не имеет значения. Но это позволяет использовать пространство имен в Angular. В следующем примере я предполагаю, что вы вызываете директиву ng-controller на своих элементах HTML.
Ваш HTML будет:
<div ng-controller="MyController as my">
{{my.var}}
</div>
И ваш контроллер будет
.controller("MyController", function() {
this.var = "hello world";
}
Это реализуется с угловой 1.3.X, если я правильно. $ scope фактически загрязняет, так как он добавляет к прототипному контроллеру цепочки наследования. То есть дочерние контроллеры doinherit $ scope переменные от их родителей.
- 1. angularjs ограничение директивы scope
- 2. AngularJS scope
- 3. ограничение aro scope в cakephp
- 4. AngularJS: scope (не $ scope) обещания
- 5. $ scope в AngularJS
- 6. Angularjs $ scope в контроллере
- 7. AngularJS scope в jQuery
- 8. Разница между $ scope и scope в angularjs
- 9. Разница функции ($ scope) и ['$ scope', function ($ scope)] в AngularJS
- 10. $ scope array и $ scope. $ Apply in angularjs
- 11. AngularJS $ scope undefined для элемента внутри $ scope
- 12. AngularJS Scope Object Inheritance
- 13. scope resolution operator angularjs
- 14. AngularJS $ scope variable
- 15. angularjs $ scope и controller
- 16. AngularJS $ scope drop
- 17. AngularJS Controller $ scope
- 18. AngularJS Использовать $ scope. (Параметр)
- 19. AngularJS access parent scope
- 20. Angularjs $ scope не обновляется
- 21. angularjs fullcalendar eventclick scope
- 22. AngularJS ng-repeat scope
- 23. AngularJS Директива Изолированного Scope
- 24. $ scope undefined in Angularjs
- 25. AngularJS не отображается $ scope
- 26. AngularJS JSON scope
- 27. AngularJS scope свойство undefined
- 28. AngularJS $ scope. $ Apply() Дилемма
- 29. AngularJS isolate scope: & vs =
- 30. AngularJS $ scope на заводе
Поскольку плакат находится под впечатлением, что $ scope является глобальным, весьма вероятно, что у него есть контроллер, прикрепленный к элементу высокого уровня (например, «
»), свойства которого «$ scope» наследуются в значительной степени каждый другой элемент. Ему также необходимо избавиться от этого. –@AlvinThompson, да, это будет просто вопрос о том, чтобы обладать точным контроллером, имеющим отношение к его страницам. –
У меня есть контроллер для каждой страницы. По какой-то причине у меня создалось впечатление, что объем $ будет иметь ценности во всем мире. Я просто запускал тесты, и это работает, как вы, ребята, сказали! Спасибо :) – Niraj