knockout observable array bounded listview不会在JQM中呈现

时间:2013-02-02 12:45:01

标签: jquery-mobile knockout.js

JQM listview会像数据一样填充,没有预期的问题,但是我无法使用JQM样式进行渲染。任何人都可以帮我解决这个问题。

我尝试过listview(),listview(“刷新”),触发器(“创建”)没有一个能够正常工作

var ProfessionsModel = function() {
    var self = this;
    self.professionDetails = ko.observableArray([]);
    self.getProfessionDetails=function(){
        var rest = new RestService('${pageContext.request.contextPath}/rest/profession/designations');
        rest.findAll(function(data) {
            $.each(data, function(index, value){
                self.professionDetails.push(value);
            });
        });
    };

    self.removeProfessionDetails= function(){
        self.professionDetails.removeAll();
    };

};

var pm = new ProfessionsModel();

$('#profession').live('pagecreate', function(event) {
    ko.applyBindings(pm, this);
});

$('#profession').live('pagebeforeshow', function(event) {
    pm.removeProfessionDetails();
});

$('#profession').live('pageshow', function(event) {
    pm.getProfessionDetails();
    $('#profession').find("ul").listview();
    $('#profession').find("ul").listview("refresh");
});

1 个答案:

答案 0 :(得分:0)

你是在错误的时刻做的。你想要相信jQM在合适的时刻是如何挑剔。

var ProfessionsModel = function() {
    var self = this;
    self.professionDetails = ko.observableArray([]);
    self.getProfessionDetails=function(){
        var rest = new RestService('${pageContext.request.contextPath}/rest/profession/designations');
        rest.findAll(function(data) {
            $.each(data, function(index, value){
                self.professionDetails.push(value);
            });
            $('#profession').find("ul").listview();
            $('#profession').find("ul").listview("refresh");                
        });
    };

    self.removeProfessionDetails= function(){
        self.professionDetails.removeAll();
    };

};

如果在追加内容后未执行jQM触发刷新将会生效,因此在$ .each部分后刷新。