在动态生成的html中将对象传递给javascript函数

在动态生成的html中将对象传递给javascript函数,javascript,angularjs,datatables,Javascript,Angularjs,Datatables,我已经在这方面遇到过好几次问题,我认为最好的办法是问有没有更好的方法来处理这样的情况,而不是创造一个“黑客”工作 我使用的是角度数据表,在数据表上我们有一个带有可点击id的单元格,它会显示一个引导模式 我想在ng click操作中传入行中项目的完整对象,但是它似乎不起作用,我认为这是由于对象被笨拙地传递到函数中造成的,该函数是一些动态生成的html: 数据表: $scope.dtColumns = [DTColumnBuilder.newColumn('Id').withTitle('Id').

我已经在这方面遇到过好几次问题,我认为最好的办法是问有没有更好的方法来处理这样的情况,而不是创造一个“黑客”工作

我使用的是角度数据表,在数据表上我们有一个带有可点击id的单元格,它会显示一个引导模式

我想在ng click操作中传入行中项目的完整对象,但是它似乎不起作用,我认为这是由于对象被笨拙地传递到函数中造成的,该函数是一些动态生成的html:

数据表:

$scope.dtColumns = [DTColumnBuilder.newColumn('Id').withTitle('Id').renderWith(CommonService.renderId),
                            DTColumnBuilder.newColumn('status').withTitle('Status').renderWith(CommonService.renderStatus),
                            DTColumnBuilder.newColumn('description').withTitle('Description').renderWith(CommonService.renderLength),
                            DTColumnBuilder.newColumn('rating').withTitle('Rating').withOption('type', 'rating'),
                            DTColumnBuilder.newColumn('date').withTitle('Date'),
                            DTColumnBuilder.newColumn("category").withTitle('Category').renderWith(CommonService.renderLength),
                            DTColumnBuilder.newColumn("subcategory").withTitle('Sub Category').renderWith(CommonService.renderLength)];
公共服务:

function renderId(data, type, full, meta){

        var render = "ID-"+data;

        //'hack' function to store object for later lookup
        setObjectForModal(full);

        //Dynamically generated html to apply link on id with ng-click function which passes in 'full' object

        var html = ' <span class="link" ng-click="showModal('+full+')" > ' + render + ' </span> ';

        return html;
    }
沿ID-[Object]不等于ID-123456的行生成错误

是否有一些字符串连接问题是我造成的,有没有办法防止它


谢谢

纯粹是偶然的机会,我找到了这个问题的解决办法。基本上可以归结为动态html呈现,要传递如上所述的对象,必须使用JSON.Stringify()将[object object]转换为JSON字符串,以便读取属性

function renderId(data, type, full, meta){

    var render = "ID-"+data;

    //'hack' function to store object for later lookup
    setObjectForModal(full);

    //Dynamically generated html to apply link on id with ng-click function which passes in 'full' object

    var html = ' <span class="link" ng-click="showModal('+ JSON.stringify(full) +')" > ' + render + ' </span> ';

    return html;
}
函数renderId(数据、类型、完整、元){
var render=“ID-”+数据;
//“hack”函数用于存储对象以供以后查找
setObjectForModal(完整);
//动态生成的html,通过传入“full”对象的ng click函数在id上应用链接
var html=''+render+'';
返回html;
}

希望这对其他人有所帮助。

你是在重新定义角度指令的概念吗?我确实记得指令+角度数据表在过去是一个难题,但它可能会起作用,我会尝试一下。测试中有什么值得更改的地方吗?在测试中需要检查的一件事是,当您需要一个数字时,为什么“id”是一个对象。我相信您需要$compile,以便dataTables注入的指令能够起作用。看到这个最近的答案(由我)->如果它不起作用,你能创建一个小的plunkr来演示这个问题吗?谢谢,这可能是我缺少的$compile,你提出的这个问题似乎是一个很好的解决方案(如果我能抽出时间来试一下的话!)
function renderId(data, type, full, meta){

    var render = "ID-"+data;

    //'hack' function to store object for later lookup
    setObjectForModal(full);

    //Dynamically generated html to apply link on id with ng-click function which passes in 'full' object

    var html = ' <span class="link" ng-click="showModal('+ JSON.stringify(full) +')" > ' + render + ' </span> ';

    return html;
}