Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/399.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Vue js就绪功能未触发_Javascript_Jquery_Ajax_Vue.js - Fatal编程技术网

Javascript Vue js就绪功能未触发

Javascript Vue js就绪功能未触发,javascript,jquery,ajax,vue.js,Javascript,Jquery,Ajax,Vue.js,我有一个vue函数,基本上有两种方法。第一个postStatus用于在用户单击保存按钮后保存帖子,另一个getPosts用于从数据库检索该用户以前的所有帖子 这里是vue.js,其中有一个对控制器的ajax调用(在Laravel 5.3中) 到目前为止,第一种方法postStatus运行良好 第二个应该在ready函数中调用或激发,但是,什么也没有发生。我甚至没有收到console.log消息试图获取以前的帖子…。似乎它从未被解雇过 问题是什么?我怎么修理它 注意:我使用的是jQuery 3.1

我有一个vue函数,基本上有两种方法。第一个
postStatus
用于在用户单击保存按钮后保存帖子,另一个
getPosts
用于从数据库检索该用户以前的所有帖子

这里是vue.js,其中有一个对控制器的ajax调用(在Laravel 5.3中)

到目前为止,第一种方法
postStatus
运行良好

第二个应该在ready函数中调用或激发,但是,什么也没有发生。我甚至没有收到console.log消息
试图获取以前的帖子…
。似乎它从未被解雇过

问题是什么?我怎么修理它


注意:我使用的是jQuery 3.1.1、Vue.js 2.0.1

我看到您使用的是Vue 2.0.1。Vue 2.0及更高版本中没有
ready
方法

以下是指向所有Vue 2.0更改列表的链接:

如上页所述,您可以使用
mounted
而不是
ready

这不是一个问题,只是一个注意事项:您正在广泛地混合jQuery和Vue。如果您只需要jQuery用于与http相关的函数,则可以改用
vue资源
-

编辑:更新
vue资源

正如@EmileBergeron在评论中指出的,vue资源早在2016年11月就已经退役了(在我用
vue资源
的最后一段提供了这个答案的几周之后)。以下是关于同一问题的更多信息:


@Mani建议在未隐藏的组件上使用
mounted(){}
。如果您想在组件中运行一个可见的函数,并使用诸如
v-If=“”
v-show=“”
之类的条件隐藏元素,那么请使用
updated(){}

是的,这就成功了!感谢您的附加说明和有用的链接:)感谢@EmileBergeron指出这一点。是的,
Vue.js
开发人员圈中的所有人都知道这一变化,并且已经适应了这一变化,但是我很长时间都忘记了这个特定的答案。我对答案进行了编辑,添加了其他注释,这样未来的读者就不必花时间自己去发现这一点。再次感谢@谢谢你提供的信息丰富的答案。然而,我必须提出一个批评:如果
vue资源
axios
任何东西
真的比
$.ajax()
好得多,那么我们为什么不疯狂地蜂拥而来呢?别再告诉人们怎么玩滑板了。用反jQuery的花言巧语来阻止它
$.ajax()
是一种经过多年战斗考验的坦克,有望成为一种实用数十年的方法。
vue资源
能说同样的话吗?请记住,现在进入太空的唯一途径是乘坐
联盟号
@Mani。谢谢你深思熟虑的、内容丰富的回复。关于
$.ajax()
作为一个独立的库,您提出了一个非常好的观点。我不同意对85kb的担心。即使是在最差的网络上,这也不过是小菜一碟,相比之下,互联网上99.999%的网站都是小菜一碟。然而,作为一个高端设备的公认拥有者,你给了我一些新的东西来调查,这只能带来新的更好的技术。谢谢你的思考!事实上,当页面加载时,mounted也可以工作。假设您进行刷新,则会触发已装入的段。然而,更新了。虽然我似乎需要声明这两个方面才能起作用。我的特定vue文件作为通用主锅炉板的一部分加载,并适用于loggedIn/未登录用户,因此
navbar.vue
-当未触发已安装段中的用户登录时,或者我应该说内部检查未运行,但使用更新的方法时-这是它在登录后调用的块
$(document).ready(function () {

    var csrf_token = $('meta[name="csrf-token"]').attr('content');
    /*Event handling within vue*/
    //when we actually submit the form, we want to catch the action
    new Vue({
        el      : '#timeline',
        data    :   {
            post    : '',
            posts   : [],
            token   : csrf_token,
            limit   : 20,
        },
        methods : {
            postStatus : function (e) {
                e.preventDefault();
                //console.log('Posted: '+this.post+ '. Token: '+this.token);
                var request = $.ajax({
                    url         :   '/posts',
                    method      :   "POST",
                    dataType    :   'json',
                    data        :   {
                        'body'  :   this.post,
                        '_token':   this.token,
                    }
                }).done(function (data) {
                    //console.log('Data saved successfully. Response: '+data);
                    this.post = '';
                    this.posts.unshift(data); //Push it to the top of the array and pass the data that we get back
                }.bind(this));/*http://stackoverflow.com/a/26479602/1883256  and  http://stackoverflow.com/a/39945594/1883256 */

                /*request.done(function( msg ) {
                    console.log('The tweet has been saved: '+msg+'. Outside ...');
                    //$( "#log" ).html( msg );
                });*/

                request.fail(function( jqXHR, textStatus ) {
                    console.log( "Request failed: " + textStatus );
                });
            },
            getPosts : function () {
                //Ajax request to retrieve all posts
                $.ajax({
                    url         :   '/posts',
                    method      :   "GET",
                    dataType    :   'json',
                    data        :   {
                        limit   :   this.limit,
                    }

                }).done(function (data) {
                    this.posts = data.posts;
                }.bind(this));

            }
        },
        //the following will be run when everything is booted up
        ready : function () {
            console.log('Attempting to get the previous posts ...');
            this.getPosts();
        }
    });

});