Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/76.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
Php Vue JS按属性列出项目v-repeat track not working_Php_Jquery_Vue.js - Fatal编程技术网

Php Vue JS按属性列出项目v-repeat track not working

Php Vue JS按属性列出项目v-repeat track not working,php,jquery,vue.js,Php,Jquery,Vue.js,我最近开始研究Vue JS。但是,我面临一个问题。 请参考以下代码:- <div id="demo"> <ul id="list_music"> <li v-repeat="musics" track-by="_uid">{{ name }}</li> </ul> </div>

我最近开始研究Vue JS。但是,我面临一个问题。 请参考以下代码:-

            <div id="demo">
                <ul id="list_music">
                    <li v-repeat="musics" track-by="_uid">{{ name }}</li>
                </ul>
            </div>

            var demo = new Vue({
            el: '#demo',
            data : {
                musics : null
            },
            created: function () {
                //this.fetchData();
                setInterval(this.fetchData, 5000);
            },
            methods : {
                fetchData: function(){
                    var self = this;
                    console.log('test');
                    $.ajax({
                        type: "POST",
                        dataType : "json",
                        url : "test.php",
                        data: {},
                        success: function (response){
                            //self.$data.musics = response;
                            self.$set("musics", response);
                        }
                    });
                }
            }
        });

  • {{name}
var demo=新的Vue({ el:'演示', 数据:{ 音乐:空 }, 已创建:函数(){ //这是fetchData(); setInterval(this.fetchData,5000); }, 方法:{ fetchData:function(){ var self=这个; console.log('test'); $.ajax({ 类型:“POST”, 数据类型:“json”, url:“test.php”, 数据:{}, 成功:功能(响应){ //self.$data.musics=响应; 自我。$set(“音乐”,回应); } }); } } });
test.PHP中的PHP代码如下:

         <?php
         $array = [
            array("name" => "Test name 0", "_uid" => 0),
            array("name" => "Test name 1", "_uid" => 1),
            array("name" => "Test name 2", "_uid" => 2),
            array("name" => "Test name 3", "_uid" => 3),
            array("name" => "Test name 4", "_uid" => 4),
            array("name" => "Test name 5", "_uid" => 5),
         ];
         echo json_encode($array);
         ?>

根据上面的代码,我试图实现的是,代码将每5秒执行一次ajax请求,并将在ul标记下动态插入新的li元素。如果任何旧值发生更改,它也将触发视图中的更改

我已经看过Vue JS指南和track by parameter的使用,但是我无法让它工作
array(“name”=>“Test name Changed”、“\u uid”=>0);echo json_编码($array)

不是将第一个索引的值从“Test name 0”更新为“Test name changed”,而是替换整个ul li

谁能告诉我我在这里做错了什么

谢谢, Ronak Shah得到了解决方案

以下是工作代码:-

var demo = new Vue({
                el: '#demo',
                data : {
                    musics : null,
                    uid : [

                    ]
                },
                created: function () {
                    //this.fetchData();
                    setInterval(this.fetchData, 5000);
                },
                methods : {
                    fetchData: function(){
                        var self = this;
                        console.log('test');
                        $.ajax({
                            type: "POST",
                            dataType : "json",
                            url : "test.php",
                            data: {},
                            success: function (response){
                                //self.$data.musics = response;
                                if(self.$data.musics != null){
                                    $.each(response, function (k,v){
                                        if(jQuery.inArray(v._uid, self.$data.uid) !== -1){
                                            var key = getKey(v._uid, self.$data.musics);
                                            self.$data.musics.$set(key,v);
                                        } else {
                                            self.$data.musics.push(v);
                                            self.$data.uid.push(v._uid);
                                        }
                                    });
                                    console.log(self.$data.uid);
                                } else {
                                    self.$set("musics", response);
                                    $.each(response, function (k,v){
                                        self.$data.uid.push(v._uid);
                                    });
                                    console.log(self.$data.uid);
                                }
                            }
                        });
                    }
                }
            });

            function getKey(uid, musics){
                var key;
                $.each(musics, function (k,v){
                    if(v._uid == uid){
                        key = k;
                        return false;
                    }
                });

                return key;
            }
上述代码将追加新的li,或更新更改后的li的值

享受吧! 罗纳克沙阿