我有一个AngularJS服务,可以打开搜索提示,执行查询,显示搜索结果,并允许用户选择项目。
我遇到的问题是当我显示搜索结果时,我无法让ng-click工作。在我的搜索结果列表中,用户可以通过ng-click单击值为html锚点以选择该项目。当用户点击他们想要的项目时,我无法调用ng-click功能。当我用ng-click点击锚点时,没有任何反应。
以下代码是在显示搜索结果模式后“呈现”的angularjs-ui-bootstrap事件。我正在获取json搜索结果并将它们呈现在jquery数据表中。在'createdRow'中,我正在尝试为ng-click添加观察程序,但它无效。
如何从搜索结果中调用ng-click功能?
// after the modal window is rendered, set the data and datatable
_instance.rendered.then(function() {
console.log('searchService.showResults.rendered.then;');
$('#searchresultsmodaltable').dataTable({
info: false,
searching: false,
ordering: false,
lengthChange: false,
autowidth: true,
pageLength: 6,
pagingType: "simple_numbers",
language: {
emptyTable: "No results found."
},
data: _results,
columns: [{
data: "codeHtml",
title: "Code"
}, {
data: "name",
title: "Name"
}],
createdRow: function(row, data, dataIndex) {
console.log('searchService.showResults.createdRow;');
$compile(angular.element(row).contents())($scope);
}
});
});
Plunker: https://plnkr.co/edit/BAtlRpVR2MBPfXr7wmJq?p=preview
要复制plunker代码中的问题:
感谢。
答案 0 :(得分:1)
我已经解决了你的问题。
看看你的代码,控制器使用了两次(两个uibModal)。每个控制器都有一个新的范围,因此传递给showResult
func的范围是旧范围。
要修复代码,请将控制器分开,然后将showResult
移至第二个。