AngularJS Controller继承:“this”不指向子控制器

时间:2014-10-26 19:28:46

标签: javascript angularjs inheritance

我正在使用controllerAs语法。

我使用$ controller从父级(更像是基础或抽象)控制器继承。我不久前发现了这个question

我注意到当我使用一个使用控制器属性(this.propName)的函数时,它不使用当前控制器this,而是使用父控件。{{1}}。这是demo (plunkr)

这是我的父控制器控制器的gist

2 个答案:

答案 0 :(得分:1)

将sayMyName方法更新为以下内容:

function sayMyName() {
  alert(this.me);
}

当您尝试在基本控制器上选择me属性时,警报应从相应的实例中选择me值,而不是在创建vm时的实例

更新了plunker link

答案 1 :(得分:1)

var app = angular.module('myApp', [])
app.controller('BaseController',function() {
    this.me = 'Base';
    this.sayMe= function() {
        alert(this.me);
    }
});
app.controller('ChildController', function($scope, $controller) {
    var controller = $controller('BaseController as base', {$scope: $scope});
    angular.extend(this, controller);
    this.me = 'Child';
});