Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用Typescript时,如何从子控制器访问父控制器中的作用域函数?_Javascript_Angularjs_Typescript - Fatal编程技术网

Javascript 使用Typescript时,如何从子控制器访问父控制器中的作用域函数?

Javascript 使用Typescript时,如何从子控制器访问父控制器中的作用域函数?,javascript,angularjs,typescript,Javascript,Angularjs,Typescript,我的页面上有一个DIV的父控制器AppController,还有一个子控制器AdminHomeController,它位于页面的某个区域内。这是我到目前为止所定义的 interface AppControllerScope extends ng.IScope { app: AppController; } app.controller('appController', AppController); class AppController { static $inject

我的页面上有一个DIV的父控制器
AppController
,还有一个子控制器
AdminHomeController
,它位于页面的某个区域内。这是我到目前为止所定义的

interface AppControllerScope extends ng.IScope {
    app: AppController;
}

app.controller('appController', AppController);

class AppController {  
    static $inject = ['$scope',] 
    constructor( public $scope: AppControllerScope ) { 
        $scope.app = this; 
    }         
    doTask() = () => {
       var x = 99;
    } 
} 

class AdminHomeController {   
    static $inject = ['$scope']
    constructor(  public $scope: ?? ) { // << What should my interface look like?
        $scope.home = this;
        app.doTask();
    }
    app = $scope.app; // How can I set up a parameter of this controller
                      // that can be used on my web page or inside this
                      // controller?
}

但我不确定它应该是什么样子。

以下是完整的代码:

/// <reference path="angular.d.ts" />

var app = angular.module('app', []);

interface AppControllerScope extends ng.IScope {
    app: AppController;
}

app.controller('appController', AppController);

class AppController {
    static $inject = ['$scope'];
    constructor(public $scope: AppControllerScope) {
        $scope.app = this;
    }
    doTask = () => {
        var x = 99;
    }
}

interface AdminHomeControllerScope extends AppControllerScope {
    home: AdminHomeController;
}

class AdminHomeController {

    public app: AppController;

    static $inject = ['$scope'];
    constructor(public $scope: AdminHomeControllerScope) { // << What should my interface look like?
        $scope.home = this;
        $scope.app.doTask();

        // For easier access if you want it
        this.app = $scope.app;
    }
}
//
var-app=angular.module('app',[]);
接口AppControllerScope扩展了ng.isScope{
app:AppController;
}
app.controller(“appController”,appController);
类AppController{
静态$inject=['$scope'];
构造函数(公共$scope:AppControllerScope){
$scope.app=这个;
}
doTask=()=>{
var x=99;
}
}
接口AdminHomeControllerScope扩展了AppControllerScope{
主页:AdminHomeController;
}
类AdminHomeController{
公共应用程序:AppController;
静态$inject=['$scope'];

构造函数(public$scope:AdminHomeControllerScope){//为什么不为扩展AppControllerScope的AdminHomeController创建一个新接口呢?
/// <reference path="angular.d.ts" />

var app = angular.module('app', []);

interface AppControllerScope extends ng.IScope {
    app: AppController;
}

app.controller('appController', AppController);

class AppController {
    static $inject = ['$scope'];
    constructor(public $scope: AppControllerScope) {
        $scope.app = this;
    }
    doTask = () => {
        var x = 99;
    }
}

interface AdminHomeControllerScope extends AppControllerScope {
    home: AdminHomeController;
}

class AdminHomeController {

    public app: AppController;

    static $inject = ['$scope'];
    constructor(public $scope: AdminHomeControllerScope) { // << What should my interface look like?
        $scope.home = this;
        $scope.app.doTask();

        // For easier access if you want it
        this.app = $scope.app;
    }
}