AJAX调用后的Attr绑定(knockoutjs)

时间:2013-08-08 19:59:49

标签: javascript jquery ajax knockout.js

目标

在AJAX调用后调用KnockoutJS的attr绑定。

问题

看一下以下片段:

$.ajax({
    url: "/Products/List?Output=JSON",
    dataType: "json",
    success: function (data) {
        $.each(data, function (key, product) {

            var item = {
                "id": product.id,
                "name": product.name,
                "slug": product.slug,
                "unitsQuantity": 
                    product.quantity + " " + 
                    (product.quantity > 1 ? 
                        product.measure + "s" : 
                        product.measure),
                "isAdded": true
            };

            viewmodel = ko.viewmodel.fromModel(item);
            self.items.push(viewmodel);
        });
    }
});

正如您所看到的,这是一个简单的AJAX调用,它将信息从JSON推送到完美运行的Knockout数组。

同时,在HTML ...

<div class="product-summary-description">
    <a data-bind="attr: { 'href': slug }, text: name"></a>
</div>

您能看到data-bind="[...]"属性吗?如果是这样,这就是问题所在。当我加载页面时,href的属性不会在元素上呈现(在我的例子中,a的元素)。

我该怎么办?

是的,我可以想象这个问题与脚本调用顺序有关,但是我看不到解决这个问题的方法。有人可以给我一个想法 - 至少从一开始?

2 个答案:

答案 0 :(得分:1)

您检查了数据(product.slug)吗?

答案 1 :(得分:-2)

尝试从

中删除href中的刻度

data-bind =“attr:{href:slug},text:name”