我正面临与Aurelia中的注射有关的一个问题。 我想知道如何实施验证,EventAggregator和路由器没有注射。在Aurelia使用对未注射类别对象的验证
下面你可以找到一个例子,它可以给你一个关于实现和我卡在哪里的清晰画面。
类资料与视图相互作用,并且在轮廓类创建AddressList中的对象与此对象(AddressList中)与视图交互。
例如:
@inject(EventAggregator, Validation, Router)
export class Profile{
addressList: Array<AddressList> = [];
eventAgg:any;
_validation:any;
_router:any;
constructor(EventAggregator, Validation, Router)
{
this.eventAgg = EventAggregator;
this._validation = Validation;
this._router = Router;
this.addressList.push(new AddressList());
}
}
export class AddressList{
street1:string = "street1";
street2:string = "street2";
constructor(){
}
现在我要实现对AddressList中的性能验证没有通过验证在AddressList中
的construtor我不希望这
this.addressList.push(new AddressList(Valdiation));
因为当我想在AddressList的构造函数中传递参数时,这会造成问题。
我想这个问题也会发生,当我们试图在另一个视图模型中构建一个视图模型时,构造函数需要一些用户定义的参数。
由于提前,
ANKUR
更新/改变的问题
我所做的改变由Matthew James Davis的建议。 但我无法理解为什么AddressList未定义。
更新的代码
import { Factory } from 'aurelia-framework';
import { ObserverLocator } from 'aurelia-framework';
import { EventAggregator } from 'aurelia-event-aggregator';
import { Validation, ensure } from 'aurelia-validation';
@inject(EventAggregator, Validation, Factory.of(AddressList))
export class Profile{
addressList: Array<AddressList> = [];
eventAgg:any;
_validation:any;
_router:any;
constructor(EventAggregator, Validation, AddressList)
{
this.eventAgg = EventAggregator;
this._validation = Validation;
this.addressList.push(AddressList(["street1","street2"]));
}
}
@inject(Validation)
export class AddressList{
street1:string = "street1";
street2:string = "street2";
constructor(Validation, args){
this.street1=args[0];
this.street2=args[1];
}
}
错误控制台
AddressList
function() {
for (var _len = arguments.length, rest = Array(_len), _key = 0; _key < _len; _key++) {
rest[_key] = arguments[_key];
}
return container.invoke(_this2._…
AddressList()
错误是由于该线在Container.prototype._createInvocationHandler:
if (fn.inject === undefined)
FN未定义。
我认为这可能会对你有所帮助,而我仍然在试图弄清楚会有什么问题。
您可以使用依赖注入,但使用工厂解析器。这会让你注入依赖关系,同时也将参数传递给构造函数 –