。每个表现不尽如人意

时间:2017-02-17 22:59:58

标签: jquery twitter-bootstrap

我有一个接受来自推送通知的数据的函数,并将其格式化为json,如下所示:

{
    "sent": "02/17/2017",
    "title": "Some Entry",
    "body": "The main message here",
    "picture": "http://example.com/me.jpg",
    "phone": "555 641-6547"
}, {
    "sent": "02/13/2017",
    "title": "Some Other Stuff",
    "body": "Main content here",
    "link": "http://mycom.com",
    "phone": "555 555-6200"
}

如您所见,他们可能有也可能没有所有可用的名称/价值对。

代码用于在模态弹出窗口中显示引导程序:

    function show8(arr) {
  alert('here ** ' + arr);  // lets you see incoming data

            arr = '[' + arr + ']';
            var i = 50 ;    
            var out = '';    
            out += '<div class="panel-group no_wrap widget uib_w_' + i + ' d-margins" data-uib="twitter%20bootstrap/accordion" data-ver="1" ';
            i++ ;
            out += 'id="bs-accordion-11">';
        $.each(JSON.parse(arr), function(idx, obj) {
            out += '<div class="panel widget uib_w_' + i + ' panel-info" data-uib="twitter%20bootstrap/collapsible" data-ver="1">';
            i++ ;
            out += '<div class="panel-heading"><h4 class="panel-title">';
            out += '<a class="accordion-toggle" data-toggle="collapse" href="#bs-accordion-group-' + i + '" data-parent="#bs-accordion-11">';
            out += '<small>' + obj.sent + '</small><br><strong><big>' + obj.title + '</strong></big><br>';
            out += '</a></h4></div>';
            out += '<div id="bs-accordion-group-' + i + '" class="panel-collapse collapse">';
            i++ ;
            out += '<div class="panel-body"><div class="col uib_col_' + i + ' single-col" data-uib="layout/col" data-ver="0">';
            i++ ;
            out += '<div class="widget-container content-area vertical-col">';
/*
            if (obj.picture.length > 0 ) {
                out += '<div class="widget uib_w_' + i + ' scale-image d-margins" data-uib="media/img" data-ver="0">';
                i++ ;
                out += '<figure class="figure-align"><img src="' + obj.picture + '"></figure></div>';
          }  
*/
            out += '<p>' + obj.body + '</p><br><br>';

/*          
    if (obj.phone.length > 0) {out += 'Call: <br><button class="btn widget uib_w_' + i + ' d-margins btn-xs btn-primary" ';
            out += 'data-uib="twitter%20bootstrap/button" data-ver="1" ';
            out += 'onclick= "placeCall(\'' + obj.phone + '\')">' + obj.phone + '</button><br>';}
            i++;  
            if (obj.link.length > 0) {out += 'Website: <br><button class="btn widget uib_w_' + i + ' d-margins btn-xs btn-primary" ';
            out += 'data-uib="twitter%20bootstrap/button" data-ver="1" ';
            out += 'onclick= "viewPage(\'' + obj.link + '\')">' + obj.link + '</button><br>';}
            i++;
*/
            out += '<span class="uib_shim"></span></div></div></div></div></div>';    
        });
        out += '</div>';

               $(".recent").html(out);
               $(".uib_w_8").modal("toggle"); 
}

如果您取消注释任何已注释的代码,列表会爆炸并无法显示。 if(val.length&gt; 0)识别出值在那里并且它有内容,但不会显示内容。

我在这里缺少什么?

1 个答案:

答案 0 :(得分:0)

如果没有图片键,则会失败:

if (obj.picture.length > 0 ) {

如果您在控制台中查看,您会看到以下内容:

  

无法读取未定义的长度

将其更改为:

if ((obj.picture) && (obj.picture.length > 0 )) {

与此相同:

if (obj.link.length > 0) {

obj.link并不总是存在,请将其更改为

if ((obj.link) && (obj.link.length > 0)) {