小编nik*_*aft的帖子

停止从已销毁的子组件接收事件

我有一个父母,我可以动态添加子组件.

在mount中添加子组件时,我会为事件注册一个监听器

EventBus.$on('content-type-saving', function() {
    logic here...
}
Run Code Online (Sandbox Code Playgroud)

问题是当父组件从子组件数组中删除时,父组件中的组件被删除,即使仍然触发,组件内部的代码也会运行.

我怎样才能防止这种情况发生?我试过这个

    beforeDestroy() {
      //do something before destroying vue instance
        EventBus.$off('content-type-saving')
    }
Run Code Online (Sandbox Code Playgroud)

但是关闭了所有其他子组件的事件,所以那些仍然存在的事件不会再做逻辑事情,因为我关闭了被破坏的子组件中的事件.

我想如果我关闭了一个事件,它只会影响为该子组件监听该事件而不会为所有子组件转换事件.

如何阻止销毁的组件对事件做出反应?

vue.js vue-component vuejs2

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

如何将变量传递给Cache :: remember函数

Laravel文档给出了这个例子:

$value = Cache::remember('users', $minutes, function() {
    return DB::table('users')->get();
});
Run Code Online (Sandbox Code Playgroud)

就我而言,我有

public function thumb($hash, $extension)
{
    Cache::remember('thumb-'.$hash, 15, function() {
        $image = Image::where('hash', $hash)->first();
    });
Run Code Online (Sandbox Code Playgroud)

如果我跑了,我得到ErrorException in ImageController.php line 69: Undefined variable: hash.我试图将$ hash传递给函数,如下所示:

Cache::remember('thumb-'.$hash, 15, function($hash)
Run Code Online (Sandbox Code Playgroud)

但后来又出现了另一个错误:

缺少App\Http\Controllers\ImageController :: App\Http\Controllers {closure}()的参数1,在C:\ xampp\htdocs\imagesharing\vendor\laravel\framework\src\Illuminate\Cache\Repository.php中调用在316行并定义

如何传递参数,以便在查询中使用它?

laravel

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

如何在Heroku上安装GD

我正在运行Laravel 5.3并尝试进行一些图像处理.我收到此错误:此PHP安装不提供GD库扩展.

我试过把gd放在我的composer.json中

"require": {
    "php": ">=5.6.4",
    "laravel/framework": "5.3.*",
    "mews/purifier": "~2.0",
    "vinkla/hashids": "^2.4",
    "barryvdh/laravel-debugbar": "^2.2",
    "fzaninotto/faker": "~1.4",
    "intervention/image": "^2.3",
    "gd": "*"
},
Run Code Online (Sandbox Code Playgroud)

它不起作用.我也尝试过:

"ext-gd": "*" 
Run Code Online (Sandbox Code Playgroud)

那也不起作用.我查看了这个页面https://devcenter.heroku.com/articles/php-support,它说:

以下内置扩展已经构建为"共享",可以通过composer.json启用(括号中给出的内部标识符名称)

GD(gd)

php gd heroku laravel

8
推荐指数
2
解决办法
3418
查看次数

在Laravel 5.2中工作的查询在Laravel 5.3中给出了错误

此查询适用于5.2:

    $galleries = Gallery::with(array(
            'images' => function ($query) {
                $query->orderBy('order', 'asc');
            }
        ))
        ->with('votes')
        ->leftJoin('votes', 'votes.votable_id', '=', 'gallery.id')
        ->selectRaw(
            'gallery.*, count(case votes.status when "upvote" then 1 else null end) - count(case votes.status when "downvote" then 1 else null end) as points'
        )
        ->where('votes.votable_type','App\Gallery')
        ->groupBy('gallery.id')
        ->orderBy('points', 'desc')
        ->published()->orderBy('gallery.created_at', 'desc')->paginate(30);
Run Code Online (Sandbox Code Playgroud)

我试图选择所有有选票的画廊,当我在5.3中运行时,我得到了这个

 1/2 PDOException in Connection.php line 333: SQLSTATE[42000]: 
Syntax error or access violation: 1055 'images.gallery.title' isn't in GROUP BY 

SQLSTATE[42000]: Syntax error or access violation: 1055 'images.gallery.title' isn't in 
GROUP BY (SQL: …
Run Code Online (Sandbox Code Playgroud)

laravel eloquent laravel-5.2 laravel-5.3

7
推荐指数
2
解决办法
3373
查看次数

Laravel缓存永远记得

我有这段代码,我认为会永远记住缓存:

$setting = \Cache::remember('website_description', 0,  function() {
  return App\Models\Setting::where('name', 'website_description')->first();
});
Run Code Online (Sandbox Code Playgroud)

但它根本不记得,有人告诉我,传递0记住功能会让它永远记住.由于这不起作用,我可以将项目永远放在缓存中吗?

laravel

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

Laravel 5.4 中的 getRelatedIds 发生了什么

我在 5.3 中使用了这个函数,现在当我尝试在 5.4 中使用它时:

$post->tags()->getRelatedIds(); 
Run Code Online (Sandbox Code Playgroud)

我收到函数不存在的错误,我检查了 5.4 的文档,但它不再存在。

任何人都知道为什么删除了这个有用的功能以及我可以做些什么来从相关模型中获取所有 ID?

laravel

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

使用select时如何返回布尔值而不是字符串?

我有这个:-

            <div class="form-group">
                <label for="">Allow Multiple</label>
                <select class="form-control" v-model="allowMultiple">
                    <option value=true>Yes</option>
                    <option value=false>No</option>
                </select>
            </div>
Run Code Online (Sandbox Code Playgroud)

allowMultiple=true在初始化它时设置,但是当我选择 NoallowMultiple='false'那么它不再是一个布尔值而是一个字符串?如何让它成为布尔值?

vue.js vuejs2

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

为什么我不能使用jquery延迟addClass和removeClass?

这是我的代码:

   $("#form_editor").addClass('abcd')
   $("#form_editor").delay(32000).removeClass('abcd')
Run Code Online (Sandbox Code Playgroud)

如果我没有取消注释第二行,则该类永远不会被应用.如果我将其注释掉,那么该类将按预期应用.似乎第二行完全没有任何延迟地执行即忽略.delay(32000).

延迟是否适用于addClassremoveClass?我认为它会延迟对它之后出现的任何函数的调用,但显然不是因为它似乎立即执行.

javascript jquery

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

Laravel的多态关系表现

是否有人在Laravel中具有执行多态关系的经验?我需要为几个不同的模型提供一个设置表,这里的多态关系会很好,我想知道性能,就像每个模型都有自己的设置表一样好吗?

设置表很简单,这就是设置表的样子:

$table->increments('id');
$table->integer('foreign_id')->unsigned();
$table->string('key');
$table->string('value')->nullable();
Run Code Online (Sandbox Code Playgroud)

我会剃光每个模型设置所需的几个表,只是想知道使用多态设置是否会出现性能问题?

如果我决定使用多态,则将这些类型添加到表中:

        $table->string('has_settings_type');
        $table->biginteger('has_settings_id')->unsigned();
Run Code Online (Sandbox Code Playgroud)

这就是laravel需要添加对多态关系的支持。

laravel eloquent laravel-5

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

从数组中删除组件,vuejs删除错误的组件

我需要能够从数组中删除特定组件.我使用splice执行此操作,虽然该组件定义已从数组中删除,但vuejs会删除错误的组件.它总是删除最后添加的组件.

这是一个小提琴,提供了以下证明:

https://jsfiddle.net/wjjonm8n/

这是一个视频来展示正在发生的事情:

https://maxniko.tinytake.com/sf/MTg3NTI5NF82MDIxNDAx

这是一些代码:

Vue.component('row-component', {
    props: ["rowData", "uniqueId"],
    mounted: function() {
        console.log('mounting: ' + this.uniqueId)
    },
    beforeDestroy: function() {
      console.log('removing: ' + this.uniqueId)
    },
    template: `
        <div>
            row component: {{rowData}}
            <button @click="$emit('delete-row')">Delete</button>
        </div>`
})

new Vue({
    el: '#app',
    template: `
        <div>
            <row-component v-for="(row, index) in rows" :row-data="row" :uniqueId="index" v-on:delete-row="deleteThisRow(index)"></row-component>
            <button @click="add()">add</button>
        </div> 
    `,
    data: {
        rows: ["line1", "line2", "line3", "line4", "line5"],

    },
    methods: {
            add() {
            this.rows.push('line'+(this.rows.length+1))
        },
        deleteThisRow: function(index) {
            this.rows.splice(index, 1)

            console.log(this.rows)
        }
    }
}) …
Run Code Online (Sandbox Code Playgroud)

vue.js vuejs2

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