首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >vue代码不能向我的参数发送值。出什么问题了?

vue代码不能向我的参数发送值。出什么问题了?
EN

Stack Overflow用户
提问于 2018-03-21 00:59:57
回答 1查看 38关注 0票数 0

作为我的代码,参数dbtask永远是null

http://127.0.0.1:8000/tasks/中,我们可以获得如下数据:

代码语言:javascript
复制
[{"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"}]
代码语言:javascript
复制
<!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>

`
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-03-21 01:02:37

在方法声明中,删除.bind(this)。它将方法函数绑定到window对象,而不是Vue实例。

换句话说,当您使用methods: { myMethod: function() { console.log(this); }.bind(this) }时,myMethod中的this将是window而不是Vue实例。

下面是这方面的一个快速演示:

代码语言:javascript
复制
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();
  }
})
代码语言:javascript
复制
<script src="https://unpkg.com/vue@latest/dist/vue.min.js"></script>

<div id="app">
  <p>{{ message }}</p>
</div>

最后,下面是您应该如何修改代码:

代码语言:javascript
复制
  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
  }
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49396534

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档