Php Vue JS按属性列出项目v-repeat track not working
我最近开始研究Vue JS。但是,我面临一个问题。 请参考以下代码:-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>
<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的值
享受吧!
罗纳克沙阿