使用 TypeScript class 编写 Angular 指令
Writing an Angular directive with a TypeScript class
我可能只是试图一次组合太多 "new-to-me" 概念,但我正在尝试使用 TypeScript class 编写自定义 Angular 指令。目前,我并没有尝试做任何非常有用的事情,只是一个 POC。
我有一个如下所示的 TypeScript 文件:
module App {
'use strict';
export class appStepper {
public link:(scope:angular.IScope, element: angular.IAugmentedJQuery, attrs: angular.IAttributes) => void;
public template:string = '<div>0</div><button>-</button><button>+</button>';
public scope = {};
public restrict:string = 'EA';
constructor(){ }
public static Factory(){
var directive = () =>
{ return new appStepper(); };
return directive;
}
}
angular.module('app').directive('appStepper', App.appStepper.Factory());
}
它在 JavaScript 中编译成这样:
(function(App) {
'use strict';
var appStepper = (function() {
function appStepper() {
this.template = '<div>0</div><button>-</button><button>+</button>';
this.scope = {};
this.restrict = 'EA';
}
appStepper.Factory = function() {
var directive = function() {
return new appStepper();
};
return directive;
};
return appStepper;
})();
App.appStepper = appStepper;
angular.module('app').directive('appStepper', App.appStepper.Factory());
})(App || (App = {}));
我的 angular 模块看起来像(我什至不知道我是否需要这样做):
angular.module('app',['appStepper'])
并且我尝试在我看来使用它:
<div app-stepper></div>
并得到这些错误:
Uncaught Error: [$injector:nomod]
Uncaught Error: [$injector:modulerr]
为什么我的 app
不知道我的指令?
虽然这不是同一个问题,但这个答案包含了我正在尝试做的一个例子:
我按照它引用的 Plnkr 中的示例进行操作并发现成功:http://plnkr.co/edit/3XORgParE2v9d0OVg515?p=preview
我最终的 TypeScript 指令如下所示:
module App {
'use strict';
export class appStepper implements angular.IDirective {
public link:(scope:angular.IScope, element: angular.IAugmentedJQuery, attrs: angular.IAttributes) => void;
public template:string = '<div>0</div><button>-</button><button>+</button>';
public scope = {};
public restrict:string = 'EA';
constructor(){ }
}
angular.module('app').directive('appStepper', [() => new App.appStepper()]);
}
我可能只是试图一次组合太多 "new-to-me" 概念,但我正在尝试使用 TypeScript class 编写自定义 Angular 指令。目前,我并没有尝试做任何非常有用的事情,只是一个 POC。
我有一个如下所示的 TypeScript 文件:
module App {
'use strict';
export class appStepper {
public link:(scope:angular.IScope, element: angular.IAugmentedJQuery, attrs: angular.IAttributes) => void;
public template:string = '<div>0</div><button>-</button><button>+</button>';
public scope = {};
public restrict:string = 'EA';
constructor(){ }
public static Factory(){
var directive = () =>
{ return new appStepper(); };
return directive;
}
}
angular.module('app').directive('appStepper', App.appStepper.Factory());
}
它在 JavaScript 中编译成这样:
(function(App) {
'use strict';
var appStepper = (function() {
function appStepper() {
this.template = '<div>0</div><button>-</button><button>+</button>';
this.scope = {};
this.restrict = 'EA';
}
appStepper.Factory = function() {
var directive = function() {
return new appStepper();
};
return directive;
};
return appStepper;
})();
App.appStepper = appStepper;
angular.module('app').directive('appStepper', App.appStepper.Factory());
})(App || (App = {}));
我的 angular 模块看起来像(我什至不知道我是否需要这样做):
angular.module('app',['appStepper'])
并且我尝试在我看来使用它:
<div app-stepper></div>
并得到这些错误:
Uncaught Error: [$injector:nomod]
Uncaught Error: [$injector:modulerr]
为什么我的 app
不知道我的指令?
虽然这不是同一个问题,但这个答案包含了我正在尝试做的一个例子:
我按照它引用的 Plnkr 中的示例进行操作并发现成功:http://plnkr.co/edit/3XORgParE2v9d0OVg515?p=preview
我最终的 TypeScript 指令如下所示:
module App {
'use strict';
export class appStepper implements angular.IDirective {
public link:(scope:angular.IScope, element: angular.IAugmentedJQuery, attrs: angular.IAttributes) => void;
public template:string = '<div>0</div><button>-</button><button>+</button>';
public scope = {};
public restrict:string = 'EA';
constructor(){ }
}
angular.module('app').directive('appStepper', [() => new App.appStepper()]);
}