gpt4 book ai didi

ember.js - 如何将 currentUser 注入(inject)所有其他用户模型

转载 作者:行者123 更新时间:2023-12-04 23:52:26 26 4
gpt4 key购买 nike

在我的应用程序中,我有几个可以成为 friend 的用户。现在我正在尝试构建一个函数,该函数将“friendShipStatus”从当前登录的用户传递给另一个用户。
这是这个问题的后续问题:Intersection of promises and dependent computed properties

 /**
* Gives the relation between two User
* 4: has requested your friendship
* 3: Yourself
* 2: Friends
* 1: FriendShip Request
*/
friendShipStatus: function() {
return this.container.lookup('user:current').then(function(user){
if(this.get('friends').contains(user)){
return 2;
} else if(this.get('friendsWithMe').contains(user)){
return 4;
} else if(this.get('myFriends').contains(user)){
return 1;
} else if (this.get('id') === user.get('id')){
return 3;
} else {
return 0;
}
});

}.property('friends.@each')

Promise 的东西已经是一种尝试,但没有奏效。我宁愿让 currentUser 注入(inject)并观察属性,只要当前用户被解决,属性就会发生变化。因此,我的尝试:
Ember.Application.initializer({
name: "currentUser",

initialize: function(container, application) {
var store = container.lookup('store:main');
container.register('user:current', store.find('user', 1), { instantiate: false, singleton: true });
}
});

Ember.Application.initializer({
name: "injectCurrentUser",
after: 'currentUser',

initialize: function(container) {
// container.injection('controller:application', 'currentUser', 'user:current');
container.typeInjection('route', 'currentUser', 'user:current');
container.typeInjection('controller', 'currentUser', 'user:current');
container.typeInjection('model', 'currentUser', 'user:current');
container.injection('user:model', 'currentUser', 'user:current');
}
});

我已经尝试过使用类型注入(inject)和常规注入(inject)。但在我的用户模型中,我的 currentUser 属性始终未定义。

如何将当前用户注入(inject)我的用户模型?

最佳答案

在注册之前,您无需等待用户从 ember 数据返回。您可能希望推迟准备阻止,直到它回来。尝试这样的事情:

Ember.Application.initializer({
name: "currentUser",

initialize: function(container, application) {
application.deferReadiness();
container.lookup('store:main').find('user', 1).then(function(user) {
application.register('user:current', user, { instantiate: false, singleton: true });
application.inject('route', 'currentUser', 'user:current');
application.inject('controller', 'currentUser', 'user:current');
application.advanceReadiness();
}, function() {
application.advanceReadiness();
});
}
});

我不确定您为什么要注入(inject)模型,在我的情况下,路由/ Controller 就足够了。另请注意,这是一个初始化程序,而不是两个。

关于ember.js - 如何将 currentUser 注入(inject)所有其他用户模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20952274/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com