【问题标题】:Separate common parts of controller into a common controller将控制器的公共部分分离为一个公共控制器
【发布时间】:2016-01-18 17:59:54
【问题描述】:

我正在使用带有 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 个控制器同时传递给视图,或者是否有办法创建一个单独的文件使用复制控制器的特定部分并将其作为依赖注入传递给所需的控制器。

【问题讨论】:

  • 你可以使用角度服务/工厂

标签: angularjs routing angular-ui-router controllers


【解决方案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
})

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-08
    • 2012-02-17
    • 1970-01-01
    • 1970-01-01
    • 2016-01-13
    相关资源
    最近更新 更多