下面的代码在执行 toastEvent.setParams 语句时引发错误。不知道我错过了什么还是在19年春季弃用了?
loadContacts : function(cmp) {
var action = cmp.get("c.getContacts");
action.setCallback(this, function(response){
var state = response.getState();
if (state === 'SUCCESS') {
cmp.set('v.contacts', response.getReturnValue());
cmp.set('v.contactList', response.getReturnValue());
this.updateTotal(cmp);
}
console.log('Here');
var toastEvent = $A.get("e.force:showToast");
if (state === 'SUCCESS') {
toastEvent.setParams({
"title" : 'Success!',
"message" : 'Your contacts have been loaded successfully.'
});
}
else {
toastEvent.setParams({
"title" : "Error!",
"message" : "Something has gone wrong."
});
}
toastEvent.fire();
});
$A.enqueueAction(action);
},
答案 0 :(得分:0)
此事件由one.app容器处理。 Lightning Experience,Salesforce应用程序和Lightning社区均支持此功能。
当您尝试在one.app容器上下文之外获取$A.get("e.force:showToast")
时,会弹出该错误(例如,如果您将组件放在Lightning App中进行测试,而不是将其拖到其中的记录页上建造者)。 $A.get("e.force:showToast")
以未定义的形式返回,并且在未定义的情况下调用setParams会引发错误。
尝试将您的组件拖动到记录详细信息页面或社区上,或从Lighting组件创建一个选项卡。如果需要在one.app上下文之外使用组件,则需要自己实现显示/隐藏toast逻辑。
答案 1 :(得分:0)
您可以使用public function conversations(int $limit = null): object
{
$table = (new MessagesMembers)->getTable();
return $this->hasMany(MessagesMembers::class, 'user', 'id')
->addSelect(['user' => function ($query) use ($table) {
$query->addSelect('user')
->from($table . ' AS sub')
->where('user', '!=', $this->getAttribute('id'))
->whereRaw('`sub`.`conversation_id` = `' . $table . '`.`conversation_id`');
}])
->orderBy('created_at', 'DESC')
->limit($limit)
->get();
}
。在光环组件中,添加:
lightning:notificationsLibrary
并将您的辅助方法更改为:
<lightning:notificationsLibrary aura:id="notifLib"/>