我一直在理解範圍繼承有很多麻煩,我盡我所能從父控制器傳遞數據對象到子控制器,但我似乎無法讓事情發揮作用。有人可以解釋爲什麼這不起作用嗎?謝謝!子控制器不從父控制器繼承
編輯:我沒有指定這個較早,但它是一個項目需要使用約翰爸爸風格指南,所以我不能在任何控制器的使用$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的作品,但它[對約翰帕帕風格使用$範圍](https://github.com/johnpapa/angular-styleguide/blob/master/a1/README.md#controllers),這是一個項目要求遵守通過該風格指南。剛剛更新了我的帖子,因爲我沒有提前指定。 – Spencer