2016-04-13 2 views
2

Я пытаюсь преобразовать свое приложение, чтобы использовать синтаксис ES6, и в моем основном модуле у меня есть конфигурация и запуск вызовов.ES6 Синтаксис для Angular .config() и run()

Я изменил их

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) 

и вот мой-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']; 

И конфигурации и запускать функции не получать ссылаться ..

Пожалуйста, дайте мне знать, что я отсутствует

Thanks

+0

регулярная версия Angular 1.x не экспортирует ничего, поэтому 'import * как угловой от« углового »;' не может wo гк. – zeroflagL

+0

Я заменил module.exports с экспортным значением по умолчанию и не вызывает ошибок. (Раньше я использовал старую версию узла и npm и не уверен, что это вызвало ошибку, которую я получал, когда я использовал экспорт по умолчанию). –

ответ

5

Мало что я предлагаю:

import angular from 'angular'; 

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

Config мы используем:

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

Run мы используем:

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

Вы не могли бы использовать уколы, как мы делаем, или с помощью кнопок/* @ngInject */

+0

Как это решить проблему? Угловой 1.x не ES6, так как «импорт угловой от« угловой »,« предполагается, что он работает из коробки? Где импортируются для 'config' и' run'? Зачем раскладывать 'my-config.js' на два? Какой смысл экспортировать имя модуля? – zeroflagL

+0

Я разделил conf на два файла. Раньше у меня не было «экспорта по умолчанию», поскольку он не позволял, если бы я поместил две функции в один и тот же файл. Теперь я разделил их на два файла, каждый из которых имеет экспорт по умолчанию. Как бы то ни было, я все еще не вижу, как запускаются вызовы или методы настройки вообще! –

+0

Мой вопрос кажется, что инъекция $ не работает. Вызов будет запускать метод(), как бы ничто не вводилось в методы run() или config(). –

1

Bellow Я напишу пример, объясню, как писать с ES6 и Angularjs - синтаксис Config.

мы предполагаем, что наш загрузочный модуль с именем: main поэтому нам нужно добавить этот модуль

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"];