在Angular 1.5组件中运行ES6构造函数

时间:2016-02-11 00:52:55

标签: angularjs ecmascript-6

我尝试运行ES6构造函数代码时,' soran'标签已加载。 但它只是忽略了。如何在angular 1.5 component()中使用控制器来运行某些代码?

import { config } from './index.config';
import { routerConfig } from './index.route';
import { runBlock } from './index.run';
import { MainController } from './main/main.controller';

angular.module('soranSpace', ['ngAnimate', 'ngCookies', 'ngSanitize', 'ngMessages', 'ngAria', 'restangular', 'ui.router'])
  .config(config)
  .config(routerConfig)
  .run(runBlock)
  .controller('MainController', MainController)

  .component('soran', {
    bindings: {},
    template: '<div id="map-viewport"></div>',
    scope: {},
    controller: soranController
  });

class soranController {
  constructor($log) {
    'ngInject';

    $log.log("run!");  // how to run this ? 
  }
}

2 个答案:

答案 0 :(得分:3)

将类定义移到组件定义之上。在ES6中,不会提升类声明,因此在定义组件时未定义soranController。上周我遇到了同样的问题,并且由于某些原因它没有抛出任何错误 - 我认为它与代码的编译方式有关。

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes#Hoisting

答案 1 :(得分:-3)

你需要写:

controller: () => new soranController(),

因为它需要一个功能。