我有一个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