小编Vic*_*tor的帖子

Vue.js计算属性和jQuery UI可排序问题

在我的项目中,我有一个包含三个ul列表的组件。我也有一些带有项目的数据数组,每个项目都有一些属性。我的目标是:

  1. 将基本阵列中的项目分配到三个列表中
  2. 由于每个项目都有一个告诉我们该项目属于哪个列表的属性,因此可以在列表之间拖放项目并相应地更新项目数据

我没有复制粘贴大量代码,而是尝试通过使用以下简单示例在jsfiddle中重现错误的行为:

https://jsfiddle.net/89pL26d2/4/

问题是,当您拖放时,您恰好拖动了2个项目,而不是一个。

但是,当我从计算属性切换到时watch,得到了所需的行为,并且一切正常。

我找出导致错误的行:更新项目属性时的行告诉我完成拖动后该项目应属于哪个列表。但我不知道为什么会导致这种情况

我知道这不是直接使用HTML的最佳方法,但是我现在还可以。

vue.js vuejs2

5
推荐指数
1
解决办法
471
查看次数

在发送许多ajax请求时处理axios拦截器

我使用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)

ajax vue.js axios vuex vuejs2

5
推荐指数
1
解决办法
2609
查看次数

Guzzle 中的“并发”到底是什么?

我没有找到太多有关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)

php concurrency guzzle

5
推荐指数
1
解决办法
3813
查看次数

使用bower为CKEditor添加额外的插件

我用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)

我收到一个错误,找不到插件

javascript ckeditor bower

4
推荐指数
2
解决办法
3637
查看次数

从请求响应创建PDF不适用于axios,但适用于本机xhr

为了强制从服务器下载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)

javascript pdf ajax xmlhttprequest axios

4
推荐指数
3
解决办法
7371
查看次数

使用嵌套选择器和 vuejs css 模块

使用vuejs css 模块时是否可以使用嵌套 css 选择器?

例如,我想确定此 css 的范围(以便 id不会影响子组件):

.list {
    ...

    .item {
       ...
     }
}
Run Code Online (Sandbox Code Playgroud)

在文档中,我只能看到非嵌套的示例,但这很方便,因为我需要将它们命名为类似于.list-itemBEM 的名称。但如果我使用 BEM,那么使用 css 模块就没有意义了,不是吗?

css module vue.js

4
推荐指数
1
解决办法
6255
查看次数

Laravel 4在DB :: select查询条件下

我有下一个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数组?

php laravel

3
推荐指数
1
解决办法
8600
查看次数

在某些实例上禁用bugsnag

我正在尝试使用Bugsnag用于Laravel 5.我得到了一些我的应用程序实例:本地,一些生产,测试等.

在这个https://github.com/bugsnag/bugsnag-laravel文档中,它说我需要将异常处理程序替换为Bugsnag处理程序.但是我如何禁用Bugsnag用于某些实例呢?

我制作了一个.env文件,我放了apikey,所以如果我没有那个密钥集(例如),就不要使用Bugsnag了.

现在我创建的每个实例都需要apikey,否则它将无法工作,这有点不方便.另外,如果我在我的代码中放入Bugsnag通知,那么只有在设置了env/config var时才使用它们的最佳方式,我想手动检查不是一个好主意.

laravel bugsnag laravel-5

3
推荐指数
1
解决办法
2189
查看次数

vue.js中具有语言环境的前缀路由(使用vue-i18n)

我有一个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会更方便 …

javascript internationalization vue.js vue-i18n

3
推荐指数
1
解决办法
6404
查看次数

password_verify 在 PHP 7.4 中工作,但在 PHP 8.2 中不起作用

我有两个 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() 返回算法、成本和盐作为返回哈希的一部分。因此,验证哈希所需的所有信息都包含在其中。这允许验证函数验证哈希值,而无需单独存储盐或

php

3
推荐指数
1
解决办法
635
查看次数