【问题标题】:Angular. Initiation new angular directive after AJAX request角。 AJAX请求后启动新的角度指令
【发布时间】:2017-12-28 01:44:22
【问题描述】:

请帮帮我。 我有一些 JS 代码,允许使用 LEAFLET 地图。 https://gist.github.com/russtanevich/140235d5456c3215df6ac8b788485ad0

APP 允许在地图上添加新广告,当我们点击标记时 - 我们会看到有关广告的信息。 我们可以选择一些类别或在广告文本中包含一些作品作为过滤器。所有过滤器都通过 ajax 请求工作(第 51-81 行)。各种类型的过滤器的各种 ajax 请求。 在 AJAX 请求之后,我们更改 $scope.mapMarkers(第 13、54、61 行等)。好的。 mapMarkers 是包含标记对象数组的变量(如第 86 行)。好吧。标记对象有一个弹出消息(如图所示)。此消息是角度指令(第 96 行,第 5 行)。

我们在第一次加载应用程序后得到的标记有一个很好的弹出消息(角度指令启动)。 我们在过滤 AJAX 请求后得到的标记 - 也有弹出消息作为角度指令。但这是合乎逻辑的——他们没有表现出来。我们有空的弹出消息,因为在这种情况下没有启动角度指令。

我希望,我们理解我。也许我解释得不好。 我的错误是什么?建筑学?或者有没有解决办法?

非常感谢!祝你今天过得愉快!最好的问候!

【问题讨论】:

  • 我不明白这个问题。你的意思是你的弹出窗口不启动。这就是问题所在。您能否更具体地说明您要解决的问题?
  • 很多问题是您在 jQuery 和 AngularJS 中混合使用。决定你是否想用 Angular 来实现它。如果是这样,请避免使用 jQuery 来操作 DOM。
  • @Sudakatux 是的。当我应用过滤器查询 var $scope.mapMarkers 得到一个新数组。标记对象的属性“消息”是角度指令。新标记(过滤后)也具有属性“消息”(它们也是角度指令)。并且新标记中的弹出窗口是空的。因为角度指令不会启动。是的。这是我的问题。过滤后我没有空的弹出消息(通过ajax)。我想找到解决方案如何在完整的 html 和 js 代码(在下一个 ajax 请求之后)之后强制启动 ng-directives

标签: javascript angularjs ajax


【解决方案1】:

好的,所以我没有查看模块“传单指令”,​​但这是我在类似应用程序上处理它的方式。我创建了一个指令

app.directive('theDirective', function($compile, $timeout){
  return {
    restrict:'E',
    templateUrl: 'template.html' 
  };
});

在我的情况下,我使用的是 templateUrl,它在其他地方使用 <script> 之类的标签启动,该部分类似于您在 geodataToMarkers 中尝试执行的操作,只是您编写模板的方式不起作用,因为 angular 无法告诉它是模板.

现在,当您添加标记时,您需要使用模型中的内容填充模板,这意味着您必须将它们绑定在一起。你可以这样做 通过将$compile 注入一个方法并将两者联系在一起

 $compile(domElem)($scope);

这将用模型填充您的指令。 注意您应该传递 domHtml 指令而不是 html 含义 <the-directive></the-directive>

用你的代码来解释有点困难,因为你混合了很多 jquery 和 angular,你必须改变很多东西。但要明确可能的快速解决方案

当你想把东西放在一起时,你必须在标记上放置一个 id='yourmarker' 的 div,只需查找具有该 id 的元素

 var domElem = document.getElementById(markerPointerId);
          domElem.innerHTML = '<the-directive></the-directive>';

插入您的指令。并编译它

$compile(domElem)($scope);

您应该看到您的标记填充了您放入的范围。 这绝对不是 Angular 的方式。我只是给你一个我知道可行的解决方案

希望对你有帮助。

【讨论】:

    猜你喜欢
    • 2012-10-31
    • 1970-01-01
    • 1970-01-01
    • 2015-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-11
    相关资源
    最近更新 更多