当前位置: 首页 > 面试题库 >

我可以在每个控制器中使用角度功能吗?

汤才捷
2023-03-14
问题内容

如果我有一个实用函数foo,我希望能够从我的ng- app声明内的任何地方调用。是否可以在模块设置中使它全局访问,还是需要将其添加到每个控制器的作用域中?


问题答案:

基本上,您有两个选择,要么将其定义为服务,要么将其放在根范围内。我建议您使用它来提供服务,以避免污染根范围。您创建一个服务,并使其在控制器中可用,如下所示:

<!doctype html>
<html ng-app="myApp">
<head>
    <script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
    <script src="http://code.angularjs.org/1.1.2/angular.min.js"></script>
    <script type="text/javascript">
    var myApp = angular.module('myApp', []);

    myApp.factory('myService', function() {
        return {
            foo: function() {
                alert("I'm foo!");
            }
        };
    });

    myApp.controller('MainCtrl', ['$scope', 'myService', function($scope, myService) {
        $scope.callFoo = function() {
            myService.foo();
        }
    }]);
    </script>
</head>
<body ng-controller="MainCtrl">
    <button ng-click="callFoo()">Call foo</button>
</body>
</html>

如果那不是您的选择,则可以将其添加到根范围中,如下所示:

<!doctype html>
<html ng-app="myApp">
<head>
    <script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
    <script src="http://code.angularjs.org/1.1.2/angular.min.js"></script>
    <script type="text/javascript">
    var myApp = angular.module('myApp', []);

    myApp.run(function($rootScope) {
        $rootScope.globalFoo = function() {
            alert("I'm global foo!");
        };
    });

    myApp.controller('MainCtrl', ['$scope', function($scope){

    }]);
    </script>
</head>
<body ng-controller="MainCtrl">
    <button ng-click="globalFoo()">Call global foo</button>
</body>
</html>

这样,您所有的模板都可以调用,globalFoo()而不必将其从控制器传递给模板。



 类似资料:
  • 问题内容: 弹簧控制器类可以使用路径变量吗? 我知道我们可以在控制器的方法中使用路径变量。我们可以以相同的方式将其用于整个课堂吗? 例如: 我们可以这样使用吗?如果是,我们如何读取变量?实际上,根据我要响应的版本,我需要这种方法。如果无法采用上述方法,您能否建议我一个解决该问题的设计? 问题答案: 是的你可以。如果要在其中访问它,只需在您的方法中将其声明为@PathVariable。

  • 这是我的第一个问题,请原谅任何协议错误! 我也是新来的拉威尔5。我看了基础视频系列(特别是“同步标签”,并将其用于简单的数据透视表),搜索了论坛和更多的在线内容,但实际上我甚至不确定我搜索的内容是否是实现我希望的正确方法。 我正在尝试创建/更新/编辑用户的个人资料,以跟踪他们的工作经验。因此,用户可以拥有多个职位,这些职位将链接到公司。 我希望公司表是单独的,这样用户可以从下拉列表中选择现有公司。

  • 问题内容: 我有多个路线的多个控制器: 和使用的伪指令,通过这种方式: 每个控制器都不同。我希望$ scope.func在route1中时会记录“ route 1”,而FirstController是当前控制器,而在Route 2中时会记录“ route 2”,但在控制台中只有“ rout 1”。您能否告诉我为什么更改路径不会更改$ scope指令? 问题答案: 孤立范围 是我用来重用一个函数的方

  • 问题内容: 我需要将变量传递给另一个控制器。我有以下与ListCtrl相关的代码: 链接将转到另一个控制器ItemCtrl。 我想将变量传递给ItemCtrl。我想到了使用一个名为SharedProperties的服务: 单击链接后,我将调用角度单击事件以触发以下功能: 但是,ng-click似乎并没有改变我共享属性的值… 更新 我在ng-click触发的函数中放置了一个警报,并且警报应该被触发。

  • 问题内容: 我尝试在各种线程上进行搜索,但是我不能最终理解这一点。 我尝试执行上述代码段,但没有用。我可以做这样的事情吗?如果是,那么我在这里做错了什么? 问题答案: 只允许使用一个控制器,它将作为中的控制器分配给加载模板。无需在模板中为主控制器定义。 如果需要定义多个控制器,建议您定义一个主/父控制器,并在中使用它,然后使用指令在模板中已有其他控制器。 要么… 使用Angular UI的 UI-

  • 问题内容: 我有一个在Go中使用接口定义RPC样式接口的想法。因此,对于给定的服务,我可能会创建一个像这样的接口: 我想做的是使用反射来实现该接口,将方法调用转换为RPC调用,将输入参数编组,然后将结果编组回方法的输出。我知道,如果可以获取输入参数的[] interface {}接口,则可以使用反射进行服务调用。但是,我看不到有任何方法可以使用反射来动态创建一个值,该值可以通过调用使用反射的函数来