小编Fre*_*rik的帖子

将 refs 与 Vue 3 + TypeScript + Options API 一起使用

我试图了解将 refs 与 TypeScript 和 Options API 一起使用的最佳方式。在文档中,他们像下面一样引用它,但没有使用 TS。当谈到 TS 时,他们只解释了如何使用 Composition API。

当我使用this.$refs.myRef它时会抛出此错误Object is of type 'unknown'.

我知道我可以像这样投射和使用它:(this.$refs.myRef as HTMLElement)但我觉得没有必要每次都对每个裁判都这样做。

使用 Options API + TS 引用的正确方法是什么?

vue.js

12
推荐指数
1
解决办法
4252
查看次数

在 Vuex Store 模块中使用 Vue.js 插件

我正在尝试在 Vuex Store 模块中使用 Vue.js 插件。

在一个组件,我可以这样称呼它:this.$plugin()。但是,在一个模块中this没有设置。我想Vue.$plugin()会的工作,因为我初始化插件Vue.use(plugin)Vue公司是一个全局变量,但事实并非如此。

如何从模块中引用插件?

vue.js vuex

9
推荐指数
1
解决办法
7281
查看次数

Vue Router错误地将参数转换为字符串而不是整数

当我使用浏览器字段输入URL时,参数将转换为字符串,而不是整数,例如/user/1return {id: "1"}。但是,当使用时this.$route.push({}),参数正确地转换为integer {id: 1}

这是故意行为吗?如果没有,我该如何解决?

vue.js vue-router

7
推荐指数
1
解决办法
3737
查看次数

localStorage 项目未在 axios 标头中更新

我正在使用 JWT 令牌身份验证系统,当我登录时,我得到这样的令牌:

axios.post('/login', data)
    .then(response => {
        localStorage.setItem('token', response.data.token);
   });
Run Code Online (Sandbox Code Playgroud)

这很有效,并且令牌保存在 localStorage 中。但是,令牌不包含在以后的请求中。在授权报头是Bearer null

这就是我设置全局 axios 对象的方式。

window.axios = axios.create({
    baseURL: '/api/',
    timeout: 10000,
    headers: {
        'X-Requested-With': 'XMLHttpRequest',
        'X-CSRF-TOKEN': document.head.querySelector('meta[name="csrf-token"]').content,
        'Authorization': 'Bearer ' + localStorage.getItem('token')
    }
});
Run Code Online (Sandbox Code Playgroud)

如果我刷新站点,则会设置令牌并正确使用。

编辑:

我通过Authorizationcreate()方法中删除标题并使用window.axios.defaults.headers.common['Authorization']. 但是现在Laravel Echo出现了同样的问题。我创建这样的实例:

window.Echo = new Echo({
    broadcaster: 'pusher',
    key: 'xxx',
    cluster: 'eu',
    encrypted: true,
    namespace: 'xxx',
    auth: {
        headers: {
            'Authorization': 'Bearer ' + localStorage.getItem('token') …
Run Code Online (Sandbox Code Playgroud)

javascript axios

6
推荐指数
3
解决办法
7793
查看次数

使用 VirtualBox + Vagrant + Homestead 的时间不同步

每当我的计算机休眠时,Homestead 环境中的时间就会不同步。时间不会在它醒来时更新,它只是从计算机开始睡眠时开始继续。这迫使我摧毁,然后上升 Vagrant。

版本:

  • 家园 5.0.1
  • 流浪者 2.0.1
  • 虚拟盒 5.2.4

我已将此添加到Vagrantfile

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
    config.vm.provider 'virtualbox' do |vb|
       vb.customize [ "guestproperty", "set", :id, "/VirtualBox/GuestAdd/VBoxService/--timesync-set-threshold", 10000 ]
    end

    config.vm.provider "virtualbox" do |vb|
       vb.customize ["modifyvm", :id, "--cableconnected1", "on"]
    end

    // More code...
Run Code Online (Sandbox Code Playgroud)

如何让 Homestead 环境同步时间?

virtualbox vagrant homestead

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

使用Laravel whenLoaded()深度超过一层

我如何使用whenLoaded()进行比一级更深的关系?似乎只能whenLoaded像这样使用第一个关系深度:

'season' => $this->whenLoaded('origin', function () {
    return new SeasonResource($this->origin->season);
}),
Run Code Online (Sandbox Code Playgroud)

但是,如果Laravel origin加载了(如果未加载),那么seasonLaravel将会加载它,这会导致N + 1问题。这两个originseason的关系是有条件的,而且并不总是使用。因此,我想使用这样的东西:

$this->whenLoaded('origin.season', ...)
Run Code Online (Sandbox Code Playgroud)

或这个:

'season' => $this->whenLoaded('origin', function () {
     return new SeasonResource($this->origin->whenLoaded('season'));
}),
Run Code Online (Sandbox Code Playgroud)

这些都不起作用。我想更深层次的关系不存储在模型本身上,在第二种情况下,whenLoaded()查询生成器上不存在。

我如何使用whenLoaded()进行比一级更深的关系?

php laravel

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

将参数/参数传递给axios拦截器

如何将自定义参数发送到axios拦截器?我正在使用这样的拦截器:

window.axios.interceptors.request.use(function (config) {
    if (PASSED_PARAM == true) {
        doSomethingAwesome();
    }

    return config;
}, function (error) {    
    return Promise.reject(error);
});
Run Code Online (Sandbox Code Playgroud)

我也有一个响应拦截器,需要接收相同的参数。

javascript axios

3
推荐指数
5
解决办法
4571
查看次数

Laravel optional()如何工作?

创建新模型时,我尝试使用optional()帮助程序在设置值时分配值。但是,如果user未在此上下文中设置对象,则会收到此错误:"Undefined property: stdClass::$user"

$this->events()->create([
    'category_a' => optional($event)->categoryA,
    'category_b' => optional($event)->categoryB,
    'user' => optional($event->user)->accountId,
]);
Run Code Online (Sandbox Code Playgroud)

为了明确起见,$event始终设置了,但是可以包含不同的值。有时category_a设置,有时category_b设置。可选的帮助程序似乎可以解决问题。但是,当对象深于一个层次时,它将引发错误。

那么,如何optional使用一个以上级别的对象正确地与助手一起工作?

php laravel

3
推荐指数
2
解决办法
1390
查看次数

Youtube IFrame API playVideo()错误

Youtube的IFrame API不再适用于我.双方onYouTubeIframeAPIReady()onYouTubePlayerReady()得到执行.但是,当尝试加载/播放视频时,我收到以下错误:

base.js:2575 Uncaught TypeError: Cannot read property 'g' of null
    at jL (base.js:2575)
    at nL (base.js:2567)
    at PU.g.h.nh (base.js:5853)
    at E0 (base.js:3841)
    at q1.g.h.Lr (base.js:6904)
    at q1.g.h.Dy (base.js:6905)
    at r1 (base.js:3909)
    at L1.g.h.Vn (base.js:6937)
    at L1.g.h.nN (base.js:6679)
    at g.bD.g.h.V (base.js:5529)
Run Code Online (Sandbox Code Playgroud)

以下是我使用IFrame API的方法

// Load YouTube Player
var tag = document.createElement('script');
tag.src = "https://www.youtube.com/iframe_api";
var firstScriptTag = document.getElementsByTagName('script')[0];
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);

// Create YouTube Player
var jukeBoxYoutubePlayer;
function onYouTubeIframeAPIReady() {
    console.log("iframe api ready");

    jukeBoxYoutubePlayer = new YT.Player('youtube_player', …
Run Code Online (Sandbox Code Playgroud)

javascript youtube-api youtube-iframe-api

2
推荐指数
1
解决办法
1800
查看次数

PHP特征"方法不存在"

我正在使用laravel-comment来让用户互相评论.因此,我需要同时使用CommentableCanComment特性.但是当我一起使用它们时,我得到一个错误.

用户使用它如下:

use Commentable, CanComment {
    Commentable::comments insteadof CanComment;
}
Run Code Online (Sandbox Code Playgroud)

而我正在尝试这样的评论:

foreach (User::all() as $user) {
    $receiver = User::where('id', '!=', $user->id)->inRandomOrder()->get();
    $user->comment($receiver, $faker->text(100), 3);
}
Run Code Online (Sandbox Code Playgroud)

即使CanComment特性有一个调用的方法getCanBeRated,但我得到一个错误,说它没有.为什么会这样?

php traits laravel

2
推荐指数
1
解决办法
359
查看次数

Vue.js,使用插件方法

我是第一次用 Vue 构建 SPA。我将重用几个功能,但似乎无法使其工作。我收到错误"this.ExperienceToLevel is not a function"

同时,我什至不确定创建插件是实现我想要的目标的最佳方式。也就是说,让一些函数成为全局的“Vue 方式”。我希望把它分配给窗口一样window.UserLevel = new UserLevel()

用户级别.js

/*
Create Levels array
 */
let Levels = [];
for (let i = 0; i < 100; i++) {
    let xp = Math.floor(Math.pow(i, 1.3) * 100);
    Levels.push(xp);
}

/*
Create UserLevel Plugin
 */
const UserLevel = {
    install(Vue, options) {
        Vue.ExperienceToLevel = function (xp) {
            for (const [level, levelXP] of Object.entries(options.levels)) {
                if (levelXP > xp) {
                    return …
Run Code Online (Sandbox Code Playgroud)

javascript vue.js

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

将值推入数组而不填充(Javascript)

有没有办法在数组中给出一个特定的索引值。在 PHP 中,我可以这样做 $arr[index] = val;

现在,我用

Array.prototype.insert = function (index, item) {
  this.splice(index, 0, item);
};
Run Code Online (Sandbox Code Playgroud)

var mute = [];
mute.insert(index, 'value');
Run Code Online (Sandbox Code Playgroud)

但是,如果数组为空,则索引仍为 0。如何获得正确的索引?

javascript arrays push

0
推荐指数
1
解决办法
939
查看次数