我有一個pretty big question關於這個問題,但我認爲它可能很容易將其拆分成較小的。
所以,我試圖使用$控制器從ParentController繼承,但事情沒有按預期工作。
我有一個jsfiddle here。 這是代碼。
angular
.module("app",[])
.controller('ParentController', ParentController)
.controller('ChildController', ChildController)
ParentController.$inject = ['$scope']
ChildController.$inject = ['$controller', '$scope'];
function ParentController($scope) {
var vm = this;
vm.foo = 'parent foo';
}
function ChildController($controller, $scope) {
$controller('ParentController as vm', {$scope: $scope});
var vm = $scope.vm; // view model
}
和一個簡單的HTML
<div>
{{vm.foo}}
</div>
當我配置應用程序來使用ParentController,與此
<body ng-app="app" ng-controller="ParentController as vm">
它工作正常。
但現在,它與ChildController不起作用,就像vm不包括在ParentController中創建的foo屬性。
我在做什麼錯?
非常感謝。
謝謝!這與瓦爾斯運作良好,但我試圖創建一個新的功能,它不能正常工作。 [http://plnkr.co/edit/Cq6CB8srju5lbJhFDbFO?p=preview](http://plnkr.co/edit/Cq6CB8srju5lbJhFDbFO?p=preview) – David
@david它也適用於方法。問題在於你使用了'var'來表示函數表達式,並且它們沒有提升。如果你想在'vm.someValue = someValue;'賦值之後放置函數,你應該使用函數聲明。 http://plnkr.co/edit/EhjWgbPSNQvfn68WvYul?p=preview – dfsq
我的不好!非常感謝,這真的很有幫助。 – David