我现在已经遇到过几次这样的问题,而不是创造一个“黑客”工作我觉得最好问一下有没有更好的方法来处理这样的情况。
我正在使用角度数据表,在数据表上我们有一个带有可点击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)];
CommonService:
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;
}
正如你可以看到showModal('+ full +')我认为以这种方式附加对象是在它显示的html中奇怪地呈现它作为showModal([Object object])有没有办法让它工作当前点击在这个链接上什么都不做,但是作为一个int传入id可以提高模态。
作为更类似的经验,我在量角器测试中也发现了同样的问题。话说:
expect('ID-'+id).toEqual(ID-123456);
沿着ID- [Object object]的行产生错误不等于ID-123456。
我是否有一些字符串连接问题,是否有办法阻止它?
谢谢!
答案 0 :(得分:0)
纯粹的机会我找到了解决这个问题的方法。基本上归结为动态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;
}
希望这有助于某人。