使用AJAX初始化Vue数据

mut*_*y91 32 javascript ajax asp.net-mvc jquery vue.js

我正在尝试用来自JsonResultAJAX查询的数据填充Vue .当我从View Model中编码时,我的Vue接收数据就好了,但是当我尝试使用AJAX检索它时却没有.这是我的代码的样子:

<script type="text/javascript">

        var allItems;// = @Html.Raw(Json.Encode(Model));

        $.ajax({
            url: '@Url.Action("GetItems", "Settings")',
            method: 'GET',
            success: function (data) {
                allItems = data;
                //alert(JSON.stringify(data));
            },
            error: function (error) {
                alert(JSON.stringify(error));
            }
        });

        var ItemsVue = new Vue({
            el: '#Itemlist',
            data: {
                Items: allItems
            },
            methods: {

            },
            ready: function () {

            }
        });
</script>

<div id="Itemlist">
    <table class="table">
        <tr>
            <th>Item</th>
            <th>Year</th>
            <th></th>
        </tr>
        <tr v-repeat="Item: Items">
            <td>{{Item.DisplayName}}</td>
            <td>{{Item.Year}}</td>
            <td></td>
        </tr>
    </table>
</div>
Run Code Online (Sandbox Code Playgroud)

这与所有适当的包括.我知道@Url.Action("GetItems", "Settings")返回正确的URL并且数据按预期返回(由成功函数中的警报测试(请参阅AJAX中的成功函数中的注释).如此填充它:var allItems = @Html.Raw(Json.Encode(Model));有效,但AJAX查询没有.我是做错了什么?

Sam*_*ker 64

您可以在已安装的函数内部进行ajax调用(在Vuejs 1.x中为"ready").

<script type="text/javascript">
var ItemsVue = new Vue({
    el: '#Itemlist',
    data: {
        items: []
    },
    mounted: function () {
        var self = this;
        $.ajax({
            url: '/items',
            method: 'GET',
            success: function (data) {
                self.items = JSON.parse(data);
            },
            error: function (error) {
                console.log(error);
            }
        });
    }
});
</script>

<div id="Itemlist">
    <table class="table">
        <tr>
            <th>Item</th>
            <th>Year</th>
        </tr>
        <tr v-for="item in items">
            <td>{{item.DisplayName}}</td>
            <td>{{item.Year}}</td>
        </tr>
    </table>
</div>
Run Code Online (Sandbox Code Playgroud)

  • 是不是假设是`self.data.Items = data`? (5认同)
  • 将"self"设置为对原始"this"范围的引用是关键 (5认同)