我正在使用带有uiRouter的AngularJS开发一个Web应用程序。我开发了如下路线配置:
(function () {
'use strict';
var module = angular.module('app', ['ngMaterial', 'ui.router']);
function Config($urlRouterProvider, $stateProvider) {
$urlRouterProvider.otherwise('/');
$stateProvider.state('Home', {
url: '/',
templateUrl: 'Partials/homeview.html',
controller: 'homeCtrl'
}).state('Table', {
url: '/tableview',
templateUrl: 'Partials/tableview.html',
controller: 'tableCtrl'
}).state('List', {
url: '/listview',
templateUrl: 'Partials/listview.html',
controller: 'listCtrl'
}).state('New', {
url: '/new',
templateUrl: 'Partials/new.html',
controller: 'newCtrl'
}).state('Edit', {
url: '/edit/:index',
templateUrl: 'Partials/edit.html',
controller: 'editCtrl'
});
}
Config.$inject = ["$urlRouterProvider", "$stateProvider"];
module.config(Config);
}());
某些控制器中的东西传递给视图代码是重复的,所以我想知道是否有办法将2个控制器同时传递给视图,或者是否有办法创建单独的文件使用复制控制器的特定部分,并将其作为依赖注入传递到所需的控制器中。
答案 0 :(得分:1)
您无法将两个控制器链接到uiRouter路由。但您当然可以制作包含通用功能的服务或工厂。 (有关更多研究,请参阅angular.service vs angular.factory。)
var app = angular.module('app',[])
app.service('myFunctions',function() {
this.addNumbers = function(a,b) {
// calculate some stuff
return a+b;
}
}
app.controller('myController',function(myFunctions){
myFunctions.addNumbers(2,2); // 4
})