作为我的代码,参数dbtask永远是null。
在http://127.0.0.1:8000/tasks/中,我们可以获得如下数据:
[{"idknowledgedescription": null, "idexercise": null, "answerpath": "浙江数学文testpdf.pdf", "value": null, "iddailytask": 1, "briefanswer": "A", "time": null, "idstudents": 1, "exercisepath": "浙江数学文testpdf.pdf", "timeofplan": "2018-03-15", "timeoflearn": "2018-03-15T00:00:00", "anserofstudent": null, "tipspath": "浙江数学文testpdf.pdf"}]<!DOCTYPE html>
{% load static %}
<html>
<head>
<meta charset="utf-8"/>
<script src="{% static 'jslib/vue.js'%}"></script>
<script src="{% static 'jslib/reqwest.js'%}"></script>
<script typet="text/javascript" src="http://code.jquery.com/jquery-latest.js"></script>
<link rel="stylesheet" href="{% static 'css/semantic.min.css'%}" media="screen" title="no title" charset="utf-8">
</head>
<body>
{% verbatim %}
<div id="app-6">
<li v-for="t in dbtask">
{{t.exercisepath}}
</li>
</div>
{% endverbatim %}
</div>
</body>
</html>
<script type="text/javascript">
var app6 = new Vue({
el: '#app-6',
data: {
dbtask:null,
},
created() {
setTimeout(() => {
this.bbb()
}, 1000);
},
methods: {
bbb: function() {
var self=this;
<!--var a={};-->
$.getJSON('http://127.0.0.1:8000/tasks/',function(task){
self.dbtask = task;
alert(self.dbtask[0].exercisepath);
});
}.bind(this)
}
})
</script>
`发布于 2018-03-21 01:02:37
在方法声明中,删除.bind(this)。它将方法函数绑定到window对象,而不是Vue实例。
换句话说,当您使用methods: { myMethod: function() { console.log(this); }.bind(this) }时,myMethod中的this将是window而不是Vue实例。
下面是这方面的一个快速演示:
new Vue({
el: '#app',
data: {
message: 'Hello Vue.js!'
},
methods: {
regularMethod: function () { console.log('regular method', this.message); },
bindThisMethod: function () { console.log('method with .bind(this)', this.message); }.bind(this)
},
created() {
this.regularMethod();
this.bindThisMethod();
}
})<script src="https://unpkg.com/vue@latest/dist/vue.min.js"></script>
<div id="app">
<p>{{ message }}</p>
</div>
最后,下面是您应该如何修改代码:
methods: {
bbb: function() {
var self=this;
<!--var a={};-->
$.getJSON('http://127.0.0.1:8000/tasks/',function(task){
self.dbtask = task;
alert(self.dbtask[0].exercisepath);
});
// }.bind(this) // remove this
} // should be like this
}https://stackoverflow.com/questions/49396534
复制相似问题