单元格中的ui-grid按钮

时间:2015-09-25 10:12:48

标签: angularjs angular-ui-grid

所以我一直在努力解决这个问题2天,但仍然不知道该怎么做......

首先,我对角度和javascript非常新,所以我写的所有内容都可能(并且可能)非常错误。

示例数据:

{
    'title' : 'awesome title',
    'date' : '19-05-2015',
    'place' : 'nice place',
    'person' : 'Juliet Peterson',
    'status' : 'OK'
}

我需要的是,在现有的ui-grid中,添加一个包含其中一列的列     如果myData.person只包含一个persone,那么这个人     如果myData.person为空,则文字为“没有人”。     如果myData.person包含多个人,那么文本将从'选择'单击将弹出一个列表供选择。

我的问题是,我无法让它工作。这两个案例工作得很好,但是我在最后一个案例中挣扎。

我们正在使用bootstrap,所以我的心脏可以选择下拉列表或弹出按钮

这是我目前的代码:

HTML:

<div id="grid_post_id" ui-grid="gridPostOpts" ui-grid-edit class="grid"></div>

JS:

$scope.choosePerson = function(a) {
if (a.length == 0) {
    return 'No person';
} else {
    var split = a.split(',');
    if (split.length > 1) {
        var res = '<button type="button" class="btn btn-default" data-container="body" data-toggle="popover" data-placement="right" data-content="';
        for (var i = 0; i < split.length; i++) {
            res = res + split[i];
        }
        res = res + '">Choose from</button>'
        return res;
    } else {
        return a;
    }
}
}
$scope.gridPosteOpts = {

columnDefs : [
    {
        name : 'Title',
        field : 'title',
        enableCellEdit : false
    },
[...]
    {
        name : 'Person',
        cellTemplate : '<div class="ui-grid-cell-contents">{{grid.appScope.choosePerson(row.entity.person)}}</div>',
        enableCellEdit : false
    }

这段代码几乎正常工作,因为我在我的单元格中得到了rigth数据,但它显示而不是被解释为html(即我的单元格包含字符串&#39;&lt; button type =&#34; bu .. 。&#39)

3 个答案:

答案 0 :(得分:2)

使用

cellTemplate : `
    <div class="ui-grid-cell-contents">
       <button type="button" class="btn btn-default" data-container="body"
               data-toggle="popover" data-placement="right"
               data-content="{{grid.appScope.choosePerson(row.entity.person)}}">
         Choose from
       </button>
    </div>`

并让choosePerson()只返回数据。

您无法使用角度{{}}将元素注入DOM。它始终是纯文本的

答案 1 :(得分:2)

Finnaly使用SO上的各种不同方法自己设法做到了!

我使用@ j2L4e模板作为“需要按钮”的案例,而只使用了其他案例的文本;我用$data = array('us_id' => $_POST['us_id']); $stmt = $pdo->prepare("SELECT us_fk_ui_id FROM ws_users WHERE us_id= :us_id"); $stmt->execute($data); $us_fk_ui_id = $stmt->fetchColumn();

在两者之间做出选择

这是“最终”代码:

ng-if

答案 2 :(得分:0)

尝试替换此代码

<div class="ui-grid-cell-contents">{{grid.appScope.choosePerson(row.entity.person)}}</div>

<div class="ui-grid-cell-contents" ng-bind-html="grid.appScope.choosePerson(row.entity.person)"></div>