2015-02-24 122 views
1

我正在使用UI-Router模块来配置状态。我有多个状态工作并路由到控制器(TasksCtrl)并在模板中呈现(TasksPendingTable)。我需要由另一个控制器使用此模板(TaskSearchCtrl)。可能吗?这是我的国家配置。angularjs有多个控制器的模板

/// <reference path="E:\Work\myApp\AngularSPA\AngularSPA\Views/TasksEndedTable.cshtml" /> 
/// <reference path="E:\Work\myApp\AngularSPA\AngularSPA\Views/TasksEndedTable.cshtml" /> 
'use strict'; 

angular.module('myApp', ['ui.router', 'myApp.controllers', 'myApp.filters', 'ui.bootstrap']) 
    .config(['$stateProvider', '$locationProvider', 
     function ($stateProvider, $locationProvider) 
     { 
     $stateProvider 
      .state('tasksPending', { 
       url: '/tasksPending', 
       templateUrl: 'views/TasksPendingTable.cshtml', 
       controller: 'TasksCtrl' 
      }) 
      .state('tasksOverdue', { 
       url: '/tasksOverdue', 
       templateUrl: 'views/TasksPendingTable.cshtml', 
       controller: 'TasksCtrl' 
      }) 
      .state('tasksCompleted', { 
       url: '/tasksCompleted', 
       templateUrl: 'views/TasksPendingTable.cshtml', 
       controller: 'TasksCtrl' 
      }) 
      .state('tasksCancelled', { 
       url: '/tasksCancelled', 
       templateUrl: 'views/TasksPendingTable.cshtml', 
       controller: 'TasksCtrl' 
      }) 
      .state('taskSearchForm', { 
       url: '/tasksSearchForm', 
       templateUrl: 'views/taskSearch.cshtml', 
       controller: 'TaskSearchCtrl' 
      }) 
      .state('taskSearchResult', { 
       url: '/tasksSearchResult', 
       templateUrl: 'views/TasksPendingTable.cshtml', 
       controller: 'TaskSearchCtrl' 
      }) 
      .state('taskEdit', { 
       url: '/tasks/:id/Edit', 
       templateUrl: 'views/tasksEdit.cshtml', 
       controller: 'TaskEditCtrl' 
      }) 
      .state('taskAdd', { 
       url: '/tasks/Add', 
       templateUrl: 'views/taskAdd.cshtml', 
       controller: 'TaskAddCtrl' 
      }) 

      // Otherwise routes ----------------------------- 
      .state('otherwise', { 
       url: '*path', 
       templateUrl: 'views/404', 
       controller: 'Error404Ctrl' 
      }); 

     $locationProvider.html5Mode(true); 

     }]); 
+2

它不适合你吗?你的问题到底是什么? – Phil 2015-02-24 01:00:41

回答

0

如果你想有两个控制器,那么你或许应该考虑使用provider,如工厂或服务,来代替。控制器可以有多个注入工厂,因此您可以将大部分逻辑包含在工厂中而不是控制器内。 Here是我在制作Angular应用程序时总是使用的样式指南,它包含有关如何正确设置工厂的信息。我希望这有帮助!

+0

哦,如果你真的想使用两个控制器,然后尝试在状态配置中添加另一个控制器属性。如果这不起作用,那么你总是可以在html中添加额外的控制器。这应该肯定有效。 – 2015-02-24 01:06:17

0

如果我需要两个控制器在同一路线中,我所做的是定义包含在不同控制器中的两个指令,然后在我想定义的路径中使用这两个指令。