【发布时间】:2015-04-21 15:07:31
【问题描述】:
我正在做一个小项目来玩 ES6 带来的好东西,我正在尝试将注册一个类设置为一个角度指令,但我遇到了这个错误“TypeError:无法调用一个类作为函数”,但从示例中我发现他们只是编写类并将其注册为 angular 作为指令。这是我的指令。
class dateBlock {
constructor () {
this.template = '/app/dateblock/dateblock.html';
this.restrict = 'AE';
this.scope = {};
}
};
export default dateBlock
以及我导入它然后声明它的索引。
import calendarController from './calendar/calendar.js'
import dateBlock from './dateblock/dateblock.js'
function setup($stateProvider) {
$stateProvider
.state('base', {
url: '',
controller: calendarController,
templateUrl: '/app/calendar/calendar.html'
});
};
setup.$inject = ['$stateProvider']
var app = angular.module('calApp',['ngAnimate','ui.router','hmTouchEvents', 'templates'])
.config(setup)
.controller('calendarController', calendarController)
.directive('dateBlock', dateBlock)
如果我错过了某个关键步骤,我很乐意听到。另外一个问题是将所有应用程序组件导入索引并在那里注册它们或导出应用程序并在组件中导入和注册是否更干净?
【问题讨论】:
-
directive需要一个函数来返回诸如scope、template等事物的映射。我会尝试new dateBlock ()而不仅仅是dateBlock。我会将dateBlock重命名为DateBlock:-) -
谢谢,我重命名为 DateBlock。如果我创建一个 DateBlock 的新实例,我会得到一个具有模板限制和范围属性的对象,我是否应该将 DateBlock 构造函数注册为指令,并在构造函数中包含 this.link 或 this.controller 属性?跨度>
-
对于像 Angular 这样大的项目,没有任何使用 ES6 语法编写指令的“好”方法,这不是很神奇吗?我找不到一个看起来不像是过度工程或黑客的单一解决方案。
标签: javascript angularjs class angularjs-directive ecmascript-6