У меня возникли проблемы с пониманием наследования областей видимости, и я изо всех сил старался передать объекты данных из родительского контроллера в дочерний контроллер, но я не могу показаться заставить работать. Может кто-нибудь объяснить, почему это не работает? Спасибо!Контроллер ребенка, не наследующий от родительского контроллера
EDIT: Я не уточнил, это раньше, но это требование проекта использовать стиль руководства Джон Папа, так что я не могу решить эту проблему с помощью $scope
ни в одном из контроллеров.
UPDATE: Кажется, я понял цель использования this
... на основе помощи плакатов ниже, теперь я понимаю, что некоторые действия требуют использования $scope
и стиль руководства Джона папиной просто просит разработчиков использовать this
когда целесообразно, чтобы избежать конфликтов области видимости, а не в качестве замены для сферы
JS
//parent.controller.js
(function() {
'use strict';
angular
.module('app')
.controller('ParentController', ParentController);
ParentController.$inject = ['$scope'];
function ParentController($scope) {
var vm = this;
console.log(this);
vm.test = {};
vm.test.label = "This is being set in the parent controller.";
}
})();
//child.controller.js
(function() {
'use strict';
angular
.module('app')
.controller('ChildController', ChildController);
ChildController.$inject = ['$scope'];
function ChildController($scope) {
var vm = this;
vm.test = vm.test;
}
})();
HTML
<div ng-controller="ParentController as vm">
<div>PARENT: {{vm.test.label}}</div>
<div ng-controller="ChildController as vm">
<div>CHILD: {{vm.test.label}}</div>
</div>
</div>
РЕЗУЛЬТАТ
PARENT: 'This is being set in the parent controller.'
CHILD:
У вас должен быть только один модуль, почему вы объявляете два модуля? – Aparna
Проверьте это plunkr, https://plnkr.co/edit/bs9Zaba0yW8lqlStoe7Z?p=preview – Aparna
@Aparna большое спасибо за помощь. Этот plunkr работает, но [против стиля John Papa использовать $ scope] (https://github.com/johnpapa/angular-styleguide/blob/master/a1/README.md#controllers), и это требование проекта соблюдать по этому руководству по стилю. Просто обновил мой пост с этой информацией, так как я не указывал ранее. – Spencer