观察点击从ajax查询加载的数据

时间:2017-09-18 07:50:02

标签: javascript jquery angularjs

我有一个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代码中的问题:

  1. 点击“搜索”按钮打开搜索输入模式。
  2. 点击“搜索”按钮以显示搜索结果模式。
  3. 在搜索结果中,您会看到“code2”。如果单击“code2”,则没有任何反应。使用ng-click =“onClickSelect('code2')”设置html锚点,但单击时该事件不会触发。如果你看一下plunker代码中的第70行,那就是我在搜索结果并将它们放入数据表的地方。第93行是我尝试添加无效的ng-click观察器的地方。
  4. 感谢。

1 个答案:

答案 0 :(得分:1)

我已经解决了你的问题。 看看你的代码,控制器使用了两次(两个uibModal)。每个控制器都有一个新的范围,因此传递给showResult func的范围是旧范围。

要修复代码,请将控制器分开,然后将showResult移至第二个。