ajax请求后敲模板绑定

时间:2018-01-07 22:39:48

标签: jquery ajax templates knockout.js

我使用foreach完成了将数据绑定到模板的淘汰教程,我得到了它的工作。我可以对控制器进行成功的ajax调用,并且我看到数据与硬编码数据相同。但我屏幕上什么都没有。在javascript控制台中没有错误。

我的假设是我需要稍微改变语法。我用谷歌搜索了几个小时,但找不到一个很好的例子。有没有人有一个很好的例子,使用ajax调用来填充淘汰模板?

这是我的js代码:

function RecordViewModel(url) {
    var self = this;
    self.cards = ko.observableArray();
    self.loadData = function () {
        $.get(url.load, function (data) {
            self.cards = data;
        });
    }
}

var vm = new RecordViewModel({
    load: '/records/getcards'
});

$(function () {
    vm.loadData();    
    ko.applyBindings(vm);
});

html:

   <script type="text/html" id="record-template">
        <table>
            <tr>
                <td><span data-bind="text:artist" /></td>
            </tr>
            <tr>
                <td><span data-bind="text:description" /></td>
            </tr>
            <tr>
                <td rowspan="3"><span data-bind="text:price"></span></td>
            </tr>
        </table>
    </script>


<div data-bind="template: {name: 'record-template', foreach: cards() }"></div>

1 个答案:

答案 0 :(得分:3)

据我所知,您更愿意设置这样的可观察值:

self.cards(data) 

而不是

self.cards = data;