【问题标题】:AngularJs Directives Loaded EventAngularJs 指令加载事件
【发布时间】:2014-07-11 21:01:24
【问题描述】:

我刚刚开始使用 AngularJs 指令,使用资源 hereherehere

我有一种情况,在加载所有指令后我需要做一些事情。

场景 1

  • 控制器负载
  • 指令 1 加载
  • 指令 2 加载
  • 最终事件触发(最好由控制器拾取)

场景 2

  • 控制器加载
  • 指令 1 加载
  • 指令 2 加载
  • 指令 3 加载
  • 最终事件触发(最好由控制器拾取)

我似乎找不到“已加载指令”事件。通过搜索,我能找到的最好的是 SO post,(this answer 确实有效),但感觉就像是一种“广泛刷”的方法。

请问这样做的正确方法是什么?

如果需要,很乐意发布代码,但在这种情况下似乎没有用。

【问题讨论】:

  • 很可能以错误的方式看待问题。 final event fires 的用例是什么?
  • 您可以使用 $rootscope 广播或发出事件,任何侦听器都会收到您可以使用的消息,但是您想做什么?,我没有看到任何触发的特殊情况加载所有指令后的“加载事件”
  • 我正在使用 SignalR 并尝试将所有内容分成“即插即用”风格的模块(使用角度指令来实现这一点)。在 SignalR 中,连接 start() 必须在最后发生,因为在连接启动后声明的任何内容都将被忽略。我的想法是每个指令将仅引用它需要的 signalR 集线器方法,但是将集线器拆分为单独的指令意味着我需要控制何时启动连接。即按照上面的加载顺序工作。如果我的方法有误,我很乐意考虑替代方案。
  • @HockeyJ 我也一直在使用 SignalR,根据我的经验,我可以建议将 signalR 客户端 (jQuery) 包装到服务中,并在控制器中使用该服务并从那里开始工作,您将能够实现相同的目标,请记住指令旨在操作 DOM,这是 github 上的一个示例(我没有使用该 repo),但只是为了了解一下github.com/JustMaier/angular-signalr-hub
  • 您的第一个和第三个链接“资源”指向同一个网址:docs.angularjs.org/guide/directive ;)

标签: angularjs angularjs-directive angularjs-controller


【解决方案1】:

您可以在编译、链接和渲染所有指令后使用 $timeout 执行函数。

$timeout(function() { 
    // do something here
});

【讨论】:

  • 谢谢。我会试一试,以及服务并标记为答案,如果它成功了。
  • 传说他还在尝试。希望有一天他会回来并将其标记为答案。
【解决方案2】:

为了搜索者的利益...

@jack.the.ripper 的评论是正确的。 SignalR 的东西确实需要转移到服务中。

在通知所有指令何时加载的情况下,this 运行良好。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-08
    • 2013-08-25
    • 2013-06-14
    • 2019-10-04
    相关资源
    最近更新 更多