在我的项目中,我有一个包含三个ul列表的组件。我也有一些带有项目的数据数组,每个项目都有一些属性。我的目标是:
我没有复制粘贴大量代码,而是尝试通过使用以下简单示例在jsfiddle中重现错误的行为:
https://jsfiddle.net/89pL26d2/4/
问题是,当您拖放时,您恰好拖动了2个项目,而不是一个。
但是,当我从计算属性切换到时watch,得到了所需的行为,并且一切正常。
我找出导致错误的行:更新项目属性时的行告诉我完成拖动后该项目应属于哪个列表。但我不知道为什么会导致这种情况
我知道这不是直接使用HTML的最佳方法,但是我现在还可以。
我使用Larave + JWT和vue2 + vuex2 + axios
因此,当用户登录时,我将身份验证令牌存储在vuex存储中.当令牌过期时,我需要刷新它.为了刷新它,我需要发送相同的令牌进行/refresh路由,并获得一个新的令牌.至少我是如何得到的,实际上它是有效的.
问题是拦截器捕获401响应并尝试刷新令牌,但是,如果在我的组件中我发送了许多带有过期令牌的请求,该怎么办?由于ajax请求是异步的,因此拦截器代码会运行很多次.所以我收到了很多刷新请求.刷新初始令牌后,它将被视为无效.当拦截器尝试刷新无效令牌服务器响应错误时,我重定向到登录页面.
这是代码:
axios.interceptors.response.use((response) => {
return response;
}, (error) => {
const originalRequest = error.config;
if (error.response.status === 401 && !originalRequest._retry) {
originalRequest._retry = true
axios.post('auth/refresh').then((response) => {
let token = response.data.token
store.dispatch('auth/setAuthToken', token)
let authorizationHeader = `Bearer ${token}`
axios.defaults.headers = { 'Authorization': authorizationHeader }
originalRequest.headers['Authorization'] = authorizationHeader
return axios(originalRequest)
}, (error) => {
store.dispatch('auth/clearAuthInfo')
router.push({ name: 'login' })
})
}
return Promise.reject(error);
});
Run Code Online (Sandbox Code Playgroud) 我没有找到太多有关concurrency选项的信息Pool。
如果这是可以在服务器上打开的 TCP 套接字数量,那么问题是“我可以使用多少并发来更快地处理请求?”。
我有一个使用的例子Pool:
// I am using Laravel, this is basically retrieving entities from DB
$exchangers = Exchanger::all();
$client = new Guzzlelient();
$requests = [];
foreach ($exchangers as $exchanger)
{
$requests[$exchanger->id] = new Request('GET', $exchanger->xml_feed_url);
}
$pool = new Pool($client, $requests, [
'concurrency' => 5,
'options' => [
'verify' => false
],
'fulfilled' => function ($response, $index) {
echo "fulfilled: " . $index."\n";
},
'rejected' => function ($reason, $index) {
echo "rejected: …Run Code Online (Sandbox Code Playgroud) 我用bower来管理我的js包.我将CKEditor安装到bower目录中并且运行正常.
问题是:我应该如何向ckeditor添加外部插件?我在这里阅读http://ckeditor.com/blog/CKEditor-Supports-Bower-and-Composer,这可以通过使用extraPlugins属性来实现.但显然我应该以某种方式下载插件并将其添加到ckeditor/plugins文件夹中.我对bower很新,但据我所知,我不应该手动将任何文件或文件夹添加到bower目录中.相反,我应该使用bower install plugin_name或类似的东西.
所以,如果我简单地写它:
CKEDITOR.replace('pageContent', {
extraPlugins: 'Syntaxhighlighter Interface'
});
Run Code Online (Sandbox Code Playgroud)
我收到一个错误,找不到插件
为了强制从服务器下载PDF,我尝试使用axios和本机xhr对象.原因是我必须发送post请求,因为我向服务器传递了太多数据,所以带有简单链接的选项(就像site.ru/download-pdf对我来说不起作用).
即使我最终设法用Xhr做到这一点,我仍然不知道为什么axios方法不起作用.
以下是我用xhr执行此操作的方法,它对我有用:
let xhr = new XMLHttpRequest()
xhr.open('POST', Vue.config.baseUrl + `order-results/${id}/export-pdf`, true)
xhr.setRequestHeader("Authorization", 'Bearer ' + this.token())
xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded")
xhr.responseType = 'arraybuffer'
xhr.onload = function(e) {
if (this.status === 200) {
let blob = new Blob([this.response], { type:"application/pdf" })
let link = document.createElement('a')
link.href = window.URL.createObjectURL(blob)
link.download = 'Results.pdf'
link.click()
}
};
xhr.send("data=" + data);
Run Code Online (Sandbox Code Playgroud)
这是"axios-way",我实际上得到了具有正确页数的PDF,但它们都是空的:
axios.post(`order-results/${id}/export-pdf`, {
data,
responseType: 'arraybuffer'
}).then((response) => {
let blob = new Blob([response.data], { type:"application/pdf" })
let link = document.createElement('a')
link.href …Run Code Online (Sandbox Code Playgroud) 使用vuejs css 模块时是否可以使用嵌套 css 选择器?
例如,我想确定此 css 的范围(以便 id不会影响子组件):
.list {
...
.item {
...
}
}
Run Code Online (Sandbox Code Playgroud)
在文档中,我只能看到非嵌套的示例,但这很方便,因为我需要将它们命名为类似于.list-itemBEM 的名称。但如果我使用 BEM,那么使用 css 模块就没有意义了,不是吗?
我有下一个SQL查询:
SELECT summary_table.device_id, WEEKDAY(summary_table.day) as day, AVG(summary_table.shows) as avg_shows
FROM (
SELECT device_id, day, sum(shows) as shows
FROM statistics
GROUP BY device_id, day
) as summary_table
WHERE device_id IN (1,2,3) // Just for example
GROUP BY device_id, WEEKDAY(day)
Run Code Online (Sandbox Code Playgroud)
我应该如何使用Laravel执行此操作?我把这个查询放在DB :: select函数中,但是如何将所有id放在"WHERE device_id IN(?)"条件下?我尝试使用"array(implode(',',$ var))"但它不起作用.如果我有像"13,14"那样的id,我只得到id = 13的结果.
所以问题是如何放置而不是"?" ids数组?
我正在尝试使用Bugsnag用于Laravel 5.我得到了一些我的应用程序实例:本地,一些生产,测试等.
在这个https://github.com/bugsnag/bugsnag-laravel文档中,它说我需要将异常处理程序替换为Bugsnag处理程序.但是我如何禁用Bugsnag用于某些实例呢?
我制作了一个.env文件,我放了apikey,所以如果我没有那个密钥集(例如),就不要使用Bugsnag了.
现在我创建的每个实例都需要apikey,否则它将无法工作,这有点不方便.另外,如果我在我的代码中放入Bugsnag通知,那么只有在设置了env/config var时才使用它们的最佳方式,我想手动检查不是一个好主意.
我有一个locale.js文件,负责定义用户区域设置。这里是:
import store from '@/vuex/index'
let locale
const defaultLocale = 'en_US'
if (store.getters['auth/authenticated']) {
locale = store.getters['auth/currentUser'].locale || defaultLocale
} else {
if (localStorage.getItem('locale')) {
locale = localStorage.getItem('locale')
} else {
locale = defaultLocale
}
}
export default locale
Run Code Online (Sandbox Code Playgroud)
另外,我还有一个i18n.js文件,负责制作i18n我在初始化应用程序时使用的实例。
import Vue from 'vue'
import VueI18n from 'vue-i18n'
import locale from '@/services/locale'
Vue.use(VueI18n)
const fallbackLocale = 'en_US'
let i18n = new VueI18n({
locale,
fallbackLocale,
})
i18n.setLocaleMessage('ru_RU', require('@/lang/ru_RU.json'))
i18n.setLocaleMessage('en_US', require('@/lang/en_US.json'))
export { i18n }
Run Code Online (Sandbox Code Playgroud)
现在,我认为以区域设置为前缀的URL会更方便 …
我有两个 docker 容器,一个有 PHP 8.2.3,另一个有 PHP 7.4.30。
另外,我有一个包含现有密码哈希值的数据库(最初由 Yii2 框架创建,使用密码password_hash,在未知环境中)。
我制作了 test.php,其中输出了两件事:
var_dump(password_get_info('$2a$07$6c2eb62b00df224f3d20$.qzdiDRZejMnGytXWsA7Jid7RpWazDc6'))
Run Code Online (Sandbox Code Playgroud)
和
var_dump(password_verify('password', '$2a$07$6c2eb62b00df224f3d20$.qzdiDRZejMnGytXWsA7Jid7RpWazDc6'))
Run Code Online (Sandbox Code Playgroud)
在 PHP 7.4 中,结果是:
array(3) {
["algo"]=>
NULL
["algoName"]=>
string(7) "unknown"
["options"]=>
array(0) {
}
}
Run Code Online (Sandbox Code Playgroud)
和
bool(true)
Run Code Online (Sandbox Code Playgroud)
在 PHP 8.2 中:
array(3) {
["algo"]=>
NULL
["algoName"]=>
string(7) "unknown"
["options"]=>
array(0) {
}
}
Run Code Online (Sandbox Code Playgroud)
和
bool(false)
Run Code Online (Sandbox Code Playgroud)
我知道可能使用了不同的哈希算法。但是散列算法应该在散列本身中指定(并因此标识)。
另外,两个引擎都不知道该算法。但是,PHP 7.4 可以验证密码。
为什么会出现这种情况?
来自文档:
请注意,password_hash() 返回算法、成本和盐作为返回哈希的一部分。因此,验证哈希所需的所有信息都包含在其中。这允许验证函数验证哈希值,而无需单独存储盐或