我正面臨與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未定義。
我認爲這可能會對你有所幫助,而我仍然在試圖弄清楚會有什麼問題。
您可以使用依賴注入,但使用工廠解析器。這會讓你注入依賴關係,同時也將參數傳遞給構造函數 –