2016-10-04 56 views
-1

我用一个problemm注入。我有一个模板URL,但很多变体的状态。我有一个父母国家,其他州是孩子。现在它作用似乎是这样的:将另一个(父级)控制器逻辑注入派生状态(angularjs ui-router)

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 
     }) 
+0

可能会继承父控制器逻辑 http://stackoverflow.com/questions/18461263/can-an-angularjs-controller-inherit-from-another-controller-in-the-same-module –

+0

我想它可以,但我的老板告诉,它不是最好的变种(他告诉说它需要测试) –

回答

0

你能做的最好的。把这个逻辑分开到一个工厂,并在你的父控制器和它的子代中使用这个工厂。

+0

谢谢,我会尝试 –

相关问题