【问题标题】:Angularjs calling function in another fileAngularjs在另一个文件中调用函数
【发布时间】:2014-09-05 18:58:51
【问题描述】:

我的问题很像这样:AngularJS seed: putting JavaScript into separate files (app.js, controllers.js, directives.js, filters.js, services.js) 我可以在其中一个文件中创建一个可以被另一个文件调用的函数吗?如果是这样,我必须添加什么?我不添加它的唯一原因是因为它已关闭。任何帮助都会很棒!

【问题讨论】:

  • 你要添加什么?控制器、服务或指令。如果新的 JS 文件被锁定,是否可以将其包含到代码中?
  • @tymeJV 我只是举例说明我正在使用什么样的模板,以便更容易理解我想要做什么。假装他们都是控制者。 我希望一个控制器在另一个文件中调用另一个控制器中的函数。
  • @alexwilhelm 如果您试图让控制器相互“对话”,一种简单的方法是创建服务并将它们注入控制器,这样您就可以在服务中定义方法,然后在控制器中定义(s) 可以在注入时调用它们

标签: javascript angularjs


【解决方案1】:

访问另一个控制器是完全错误的。你有很多方法可以在他们之间进行交流。这里有 3 个简单的:

  1. 范围:您可以使用 $parent 或仅使用 $rootScope 访问所有父控制器的范围(不要过度使用它,否则您的根范围会很混乱)。请记住,在您更改它们之前,您的范围也始终具有您的父范围对象。在作用域变量上使用 $watch 可以使您在需要时代码更清晰。 (see the scope documentation)

  2. 事件:非常简单。你用 $scope.$on 收听,然后用 $scope.$broadcast 或 $scope.$emit 发送它(取决于你想要通知孩子还是父母)。

  3. 服务:如果您尝试实现的内容没有明确的控制器所有者,您可能不得不考虑使用服务。然后,您可以在所有控制器中使用它。 (See Creating Services)

大多数时候,您最终会使用范围,因为您想与父控制器进行交互。如果有任何不清楚的地方,请告诉我。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-12-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-15
    • 2013-12-17
    • 1970-01-01
    相关资源
    最近更新 更多