以下是我的两个班级。登录和活动。我想将Login注入Activity。在登录已经执行并设置参数后会发生这种情况。在文件2中,login.UserName始终是未定义的,我尝试绑定的任何其他项都是未定义的。是否有任何我缺少正确绑定的东西?
//file 1
import {autoinject} from 'aurelia-framework';
import {HttpClient, json} from 'aurelia-fetch-client';
import {bindable} from 'aurelia-framework';
import 'fetch';
@autoinject
export class Login{
@bindable UserName:String
constructor(private http: HttpClient){
...redacted...
}
login(){
this.UserName="test";
}
}
//file 2
import {autoinject} from 'aurelia-framework';
import {HttpClient, json} from 'aurelia-fetch-client';
import 'fetch';
import {Login} from 'login/src/login';
@autoinject
export class Activity {
Login: Login;
constructor(private http: HttpClient, private login: Login) {
...redacted...
this.Login=login;
});
}
答案 0 :(得分:1)
我认为Activity
class / custom-element正在注入Login
class / custom-element的不同实例。虽然这些项目通常具有容器控制的“单身”生命周期,但UI组件却没有。我认为你可以通过将@singleton
添加到Login
ui组件来获得你必须工作的东西,但你可能最好创建一个单独的类,可能称为“用户”,你可以注入Login
UI组件和Activity
UI组件。