Knockoutjs viewmodel数据绑定无法在动态创建的div中工作

时间:2015-04-20 06:58:49

标签: javascript jquery asp.net asp.net-mvc knockout.js

我创建了div并在用户点击给定链接时加载该div。 div加载后,我正在清除节点,然后应用绑定。

但是数据没有绑定到视图,它也不会产生任何错误。请检查以下代码并建议任何解决方案:

    $(document).on("click", ".popup-list", function (e) {
        var x = e.pageX, y = e.pageY, elm = this,
    left = $(elm).offset().left + 5,
    top = $(elm).offset().top + 25;var d = $("<div/>").addClass('myClass');
    var url = $(this).data("url") || $(this).attr("dataurl");
    d.load(url, function (response, status, xhr) {
        if (status == "error") {
            var msg = "<h2>Sorry!  Website encounter a problem. Please contact your system administration</h2> <br/>";
            d.html(msg + xhr.status + " " + xhr.statusText);
        }
    }).appendTo('div.myBody').css({ // d.html(tm)
        top: top,
        left: left,
        height: 0, opacity: 0,
    })

    $(d).animate({ height: '346px', width: '1074px', opacity: 1 }, 800)
    ViewModel.getItemList();
    ViewModel.ItemList.extend({ paging: 10 })
    ko.cleanNode($('.myClass'));
    ko.applyBindings(ViewModel, $('.myClass')[0]);
});

这是视图模型:

var ViewModel = {
ItemList: ko.observableArray([]),
getItemList: function () {
    $.ajax({
        url: "myurl"',
        data: "my para",
        type: 'POST',
        async: false,
        contentType: 'application/json; charset=utf-8',
        success: function (data) {
            ViewModel.ItemList(data);
        }
    });
}

};

这是局部视图:

<ul data-bind="foreach : ItemList.currentPageData" >
<li>
    <div >
        <span data-bind="text:myProperty"></span>
    </div>

</li>

1 个答案:

答案 0 :(得分:0)

为什么不创建&#34;实例&#34; ViewModel?

试试这个:

var viewModel = new ViewModel();
viewModel.getItemList();
viewModel.ItemList.extend({ paging: 10 })
// ko.cleanNode($('.myClass'));
ko.applyBindings(viewModel, $('.myClass')[0]);

我评论了ko.cleanNode因为它对我没有意义,但你可以尝试任何一种方式:)

祝你好运

丹尼尔