所建议的,使用
我有一个本机JavaScript类:
var Holder = new function(elements) {
this.elements = elements;
this.anyFunction() {
// use of this.elements
};
};
如何在角路通道中使用它?例如,如果我想使用:
.controller('AnyController', ['Holder',
function (Holder) {
var elements = [
{id: 1, label: 'foo'},
{id: 2, label: 'bar'}
];
$scope.holder = new Holder(elements);
}])
那我应该如何注册Holder
课程?有哪些选项(如果有)?
并行,在Angular应用中使用本机JavaScript类不好(即不在框架中集成)?
您可以用工厂返回类
.factory('Holder', function() {
return (function (){
this.foo = foo;
this.bar = bar;
});
});
现在使用它
.controller('AnyController', ['Holder', function (Holder) {
var holder = new Holder();
}]);
编辑如注释
factory
代替service
据我了解,工厂是单身人士,但是工厂可以生成可以创建实例的类。因此,当您注入构造函数时,工厂将返回对构造函数的引用,或者在构造函数周围的包装函数以不使用 new
:
.factory('Holder', function() {
function Holder(elements) {
this.elements = elements;
}
Holder.prototype.get = function() {
return this.elements;
};
return function(elements) {
return new Holder(elements);
};
})
.controller('Main', function($scope, Holder) {
var elements = [
{id: 1, label: 'foo'},
{id: 2, label: 'bar'}
];
$scope.elements = Holder(elements).get();
});