2016-04-13 23 views
2

Ich versuche, meine Anwendung zu ES6 Syntax zu konvertieren und in meinem Hauptmodul habe ich konfigurieren und Ausführen von Aufrufen.ES6 Syntax für Angular .config() und run()

Ich änderte sie

import * as angular from 'angular'; 
import {config,run} from './my-config'; 
import MyAppController from './my-app-controller'; 

module.exports = angular.module("my-app", []) 

    .config(config) 

    .run(run) 

    .controller('myAppController', MyAppController) 

und hier ist mein-config.js

import MyService from './my-service'; 
export function config($compileProvider, $logProvider, localStorageServiceProvider,$stateProvider, $urlRouterProvider){ 

    console.log('.config() : START '); 
    $compileProvider.debugInfoEnabled(true); 

    $logProvider.debugEnabled(true); 

    localStorageServiceProvider.setPrefix('myapp'); 
    localStorageServiceProvider.setNotify(true, true); 

    $stateProvider.state('home', { 
     url: '/', 
     views: { 
      'main': { 
       controller: 'myAppCtrl', 
       templateUrl: 'app/home.tpl.html' 
      } 
     } 
    }); 
    // handle routes here 
    $urlRouterProvider.otherwise('/'); 
} 
config.$inject =['$compileProvider', '$logProvider', 'localStorageServiceProvider','$stateProvider', '$urlRouterProvider']; 



export function run(MyService) { 
    console.log('.run() : '); 
    MyService.start(); 
} 

run.$inject=['MyService']; 

Und config und führen Funktionen werden nicht aufgerufen zu werden ..

Bitte lassen Sie mich wissen, was Ich vermisse

Danke

I 10
+0

Die hinzufügen reguläre Version von Angular 1.x exportiert nichts, also 'import * als eckig von 'angular';' kann nicht wo rk. – zeroflagL

+0

Ich ersetzte module.exports mit Export-Standard und es wirft keinen Fehler. (Früher benutzte ich alte Version von Knoten und Npm und nicht sicher, ob das den Fehler verursachte, den ich erhielt, als ich Exportstandard verwendete). –

Antwort

5

Nur wenige Dinge vorschlagen:

import angular from 'angular'; 

export default angular 
    .module('app', [ 
    //list of your modules 
    ]) 
    .config(config) 
    .run(run) 
    .name; 

Config verwenden wir:

export default function config(/* injectables here */) { 
    //Your code 
} 

Run wir verwenden:

export default function run(/* injectables here */) { 
/* @ngInject */ 
//Your code 
} 

Sie werden vielleicht nicht die injizierbare verwenden wie wir, oder die Verwendung/* @ngInject */

+0

Wie löst das das Problem? Angular 1.x ist nicht ES6, also wie soll 'impor angular 'von' eckig ';' soll aus der Box funktionieren? Wo sind die Importe für 'config' und' run'? Warum sollte 'my-config.js' in zwei geteilt werden? Wozu soll der Name des Moduls exportiert werden? – zeroflagL

+0

Ich habe das Conf in zwei Dateien aufgeteilt. Früher hatte ich nicht "Export Standard", wie es nicht erlaubt, wenn ich zwei Funktionen in der gleichen Datei. Jetzt habe ich sie in zwei Dateien aufgeteilt und jeder hat Export-Standard. Wie auch immer, ich sehe immer noch nicht, dass die run oder config Methoden überhaupt aufgerufen werden !! –

+0

Mein Problem scheint der $ inject funktioniert nicht. Der Aufruf wird run() Methode, wie auch immer nichts in run() oder config() Methoden injiziert wird. –

1

Darf ich ein Beispiel schreiben erklären, wie man mit ES6 schreibt und Angularjs die Syntax von Config.

wir annehmen, dass unser Bootstrap-Modul mit dem Namen: main so müssen wir dieses Modul

main.js

import angular from 'angular'; 
import ngRoute from 'angular-route'; 
import MainRoute from './main.route';//import config rout whuch I added in //other js file 
    let mainModule = 
     angular.module('mainApp', [ 
       'ngRoute', 
       homeModule.name, 
      ] 

     ) 
     .config(MainRoute); 

    export default mainModule; 

main.route.js

export default function routeConfig($routeProvider) { 

      $routeProvider 
       .when('/', { 
        templateUrl: 'src/content.components/home/home.tpl.html', 
        controller: 'HomeController as vm' 
       }); 
     } 

    routeConfig.$inject = ["$routeProvider"];