我有一个App.vue组件,我想加载当前登录的用户.我还想在用户尝试登录路线时重定向用户,并且当前登录的用户已经保存在上下文中(他已经登录).
// inside App.vue component
created() {
AuthService.getCurrentUser().then((user) => {
this.user = user;
});
}
Run Code Online (Sandbox Code Playgroud)
我检查created了登录组件的方法是否设置了currentUser,但是当用户尝试转到登录页面时,可能是当前用户的请求未完成.
我的问题是:
在App.vue组件加载之前,如何等待数据加载?我看到这样的事情:
waitForData: true,
data(transition) {
return AuthService.getCurrentUser().then(currentUser => {
transition.next({ currentUser });
});
}
Run Code Online (Sandbox Code Playgroud)
实际上并没有等待加载数据并且组件仍然加载.
编辑:我知道beforeRouteEnter但这App.vue是一个组件,它是所有组件的父组件,而不是特定于路由的组件.
我想制作一个网格组件,它接受插槽作为附加列单元格.
<grid>
<td slot="additional-column">...</td>
</grid>
Run Code Online (Sandbox Code Playgroud)
在实际组件中:
<template>
<table>
<div v-for="item in items">
...
<slot name="additional-column"></slot>
</div>
</table>
</template>
Run Code Online (Sandbox Code Playgroud)
不幸的是,插槽开始重复,这是vuejs不喜欢的东西.
在同一渲染树中找到重复出现的插槽"additional-column" - 这可能会导致渲染错误.
有谁知道我该如何处理这个问题?
提前致谢!
我正在尝试编写一个谓词共同(L,S),它从L列表中生成的列表L中列表的所有公共子序列.
subseq([], _).
subseq([H|S], L) :- append(_, [H|T], L), subseq(S, T).
common(L, X) :- not((
member(A, L),
not(subseq(X, A))
)).
Run Code Online (Sandbox Code Playgroud)
即使输入错误,它也只是给我"真实".
例如:
common([[1,2,3,4], [2,3], [12]], X).
true
编辑
我注意到它实际上正在工作,但它不是用谓词为真的术语替换X.
有没有办法使用该矩阵的索引来增加矩阵的特定行和列,并且如果索引重复,则同时执行两次。例如,使用以下代码:
rows <- c(1, 2, 3, 4, 1)
cols <- c(4, 2, 5, 1, 4)
freq <- matrix(0, 5, 5)
freq[cbind(rows, cols)] <- freq[cbind(rows, cols)] + 1
freq
Run Code Online (Sandbox Code Playgroud)
我在特定的行和列上得到一个,但由于 (1, 4) 组合重复两次,我想找到一种方法将另一个 1 添加到它并使用 R 的矩阵索引以计算有效的方式使其成为两个像上面一样。
提前致谢!