Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/25.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 将另一个(父)控制器逻辑注入派生状态(angularjs ui路由器)_Javascript_Angularjs_Angular Ui Router - Fatal编程技术网

Javascript 将另一个(父)控制器逻辑注入派生状态(angularjs ui路由器)

Javascript 将另一个(父)控制器逻辑注入派生状态(angularjs ui路由器),javascript,angularjs,angular-ui-router,Javascript,Angularjs,Angular Ui Router,我被一个问题困住了。我有一个模板URL,但有很多状态变量。我有一个父母州,其他州是孩子们。现在看起来是这样的: angular .module("StN") .config(config); function config($stateProvider) { $stateProvider .state("invoice", { url: "/invoice", templateUrl: "/Scripts

我被一个问题困住了。我有一个模板URL,但有很多状态变量。我有一个父母州,其他州是孩子们。现在看起来是这样的:

 angular
    .module("StN")
    .config(config);

function config($stateProvider) {
    $stateProvider
        .state("invoice", {
            url: "/invoice",
            templateUrl: "/Scripts/js/stn/invoice/invoice.html",
            controller: "invoiceController as vm"
        })
        .state("invoice.custom", {
            url: "/castom"
        })
        .state("invoice.search", {
            url: "/search?Status?Invoice?"
        });
}
在控制器中,我有开关盒结构,在这里我检查当前状态名称并执行一些不同的逻辑

angular
   .module("StN")
   .controller("invoiceController", invoiceController);

function invoiceController($http, $state) {
    switch (state.name) {
    case "invoice.search":
        //first logic 
        break;
    case "invoice.custom":
        //second logic
        break;
    case "invoice.status":
        //third logic
        break;
    }
}
我需要为每个状态使用不同的控制器,但此控制器必须具有父控制器(invoiceController)的逻辑。我该怎么做

范例

.state("invoice", {
        url: "/invoice",
        templateUrl: "/Scripts/js/stn/invoice/invoice.html",
        controller: "invoiceController as vm"
    })
    .state("invoice.custom", {
        url: "/castom"
        controller: "DerivedinvoiceController as vm" //but it must have logic of base controller
        })

尽你所能。将此逻辑与工厂分开,并在父控制器及其子控制器中使用此工厂。

请尽最大努力。将此逻辑分离到工厂,并在父控制器及其子控制器中使用此工厂。

可能是您可以继承ParentController逻辑,我认为可以,但我的老板告诉我,这不是最佳变体(他告诉我需要测试),可能是您可以继承ParentController逻辑,我认为可以,但我的老板告诉我,这不是最好的变体(他说这是测试的需要)