jquery的ajax和vue的v-for 无法绑定动态数据?

<!DOCTYPE html>
<html lang="en">
<head>

    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>


<div id="app_m">
    <button v-on:click="getData">电影</button>
    <tr v-for="item in items">
        <td>{{item.title}}</td>
        <!--<td>{{item.year}}</td>-->
        <!--<td>{{item.subtype}}</td>-->
    </tr>
</div>


<script src="vue.js"></script>
<script src="jquery-3.2.0.js"></script>
<script>



    var web_douban = new Vue({
        el : '#app_m',
        data :{
            datas:''

            },

        methods :{
            getData : function () {
                $.ajax({
                    type : 'Get',
                    dataType : 'jsonp',
                    url : ' http://api.douban.com/v2/movie/top250',
                    success : function (data) {
                        web_douban.data=data.subjects;
                        console.log(web_douban.data)


                    }
                })


            }
        }
    })


</script>
</body>
</html>

这里显示的报错信息
2017-03-28-155821.jpg
这是那个对象
2017-03-28-160008.jpg

阅读 4.6k
3 个回答

最重要的一个错误: 把<tr>,<td>换掉,td是配合table用的,你单独的让vue去使用它会报错的.你可以先将它改成div,span
第一个错误:
你的<tr v-for="item in items"> items 没有在data中去定义,所以vue告诉你这个是错误的, 看你的写法应该是想迭代datas吧?
第二个错误:
ajax success 函数中赋值不对, 你的v-for是迭代的items,为什么要给datas赋值?所以你在v-for中应该把items换成datas

建议使用vue-resource .

clipboard.png
还有上面代码中涉及到了跨域 没有处理

你这个代码漏洞有点多。。。

  1. items你定义了么?你应该在vue实例中的data中去定义他。

  2. 而且他应该是一个数组,所以items:[]

  3. 定义了items之后,接下来就是更改,你ajax函数里面的变量,把datas换成items就好了,不好你打我。。。

  4. 不要盲目去模仿一种写法,形成定性思维了,items就是他的数据,他定义了你没定义,如何能用呢。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题