Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/473.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何创建指令控制器?_Javascript_Angularjs - Fatal编程技术网

Javascript 如何创建指令控制器?

Javascript 如何创建指令控制器?,javascript,angularjs,Javascript,Angularjs,我的问题是,我找不到任何有关这方面的官方文件 暗指 控制器:['$scope',函数($scope){ 为什么我不能在这里省略$s,就像在链接函数(scope,elem,attrs){?控制器:['scope',函数(scope){将导致错误“错误:[$injector:unpr]未知提供程序:scopeProvider在函数($scope)中,$scope”是依赖项“$scope”的别名。可以在那里重命名它 JS代码的相关部分: controller: ['$scope', fu

我的问题是,我找不到任何有关这方面的官方文件

暗指

控制器:['$scope',函数($scope){


为什么我不能在这里省略
$
s,就像在
链接函数(scope,elem,attrs){
控制器:['scope',函数(scope){
将导致错误
“错误:[$injector:unpr]未知提供程序:scopeProvider在
函数($scope)中,
$scope
是依赖项“$scope”的别名。
可以在那里重命名它

JS代码的相关部分:

      controller: ['$scope', function(scope) { // "scope" as an alias
        var panes = scope.panes = [];

        scope.select = function(pane) { // $scope renamed
          angular.forEach(panes, function(pane) {
            pane.selected = false;
          });
          pane.selected = true;
        };

        this.addPane = function(pane) {
          if (panes.length === 0) {
            scope.select(pane); // $scope renamed
          }
          panes.push(pane);
        };
      }],

函数($scope)
中的
$scope
是依赖项
'$scope'
的别名。您可以在那里重命名它

JS代码的相关部分:

      controller: ['$scope', function(scope) { // "scope" as an alias
        var panes = scope.panes = [];

        scope.select = function(pane) { // $scope renamed
          angular.forEach(panes, function(pane) {
            pane.selected = false;
          });
          pane.selected = true;
        };

        this.addPane = function(pane) {
          if (panes.length === 0) {
            scope.select(pane); // $scope renamed
          }
          panes.push(pane);
        };
      }],

指令的link函数只是一个普通的JavaScript函数,它的类型签名为scopeelementattributes对象,按该顺序排列。如果要翻转参数并声明我们的link函数,如下所示:

link: function(attr, elem, scope) {
      console.log(scope)
    }
第一个参数(现在称为attr)仍然是scope对象

与链接函数不同,控制器函数由Angular的喷射系统调用

“$scope”
中的“$”表示正在将作用域值注入当前上下文。但是,并非所有对作用域的引用都基于依赖项注入。例如,在
$watch、link和cloning
函数中(不是详尽的列表),范围始终作为位置参数传递,而不管其名称如何

你可以参考以下文章:


指令的链接函数只是一个普通的JavaScript函数,它的类型签名为范围元素属性对象,按顺序排列。如果要翻转参数并声明我们的链接函数,如下所示:

link: function(attr, elem, scope) {
      console.log(scope)
    }
第一个参数(现在称为attr)仍然是scope对象

与链接函数不同,控制器函数由Angular的喷射系统调用

“$scope”
中的“$”表示正在将作用域值注入当前上下文。但是,并非所有对作用域的引用都基于依赖项注入。例如,在
$watch、link和cloning
函数中(不是详尽的列表),范围始终作为位置参数传递,而不管其名称如何

你可以参考以下文章:

  • 有关所谓的
    指令定义对象
    的官方文档可在中找到

  • 指令控制器构造函数
    可注入局部变量
    $scope
    $element
    $attrs
    $transclude
    。这些都是注入的。因此,它们的准确拼写很重要

  • 通过
    controller:function($scope){}
    创建
    directive控制器
    与创建类似于
    controller:['$scope',function(scope){}]

      • 有关所谓的
        指令定义对象
        的官方文档可在中找到

      • 指令控制器构造函数
        可注入局部变量
        $scope
        $element
        $attrs
        $transclude
        。这些都是注入的。因此,它们的准确拼写很重要

      • 通过
        controller:function($scope){}
        创建
        directive控制器
        与创建类似于
        controller:['$scope',function(scope){}]


      • 函数($scope)
        中的
        $scope
        是一个别名。您可以将其重命名为
        函数(scope)
        。不,我不能。查看更新的回答不确定您是否在代码块中将
        $scope
        重命名为
        范围
        。请使用下面的工作代码检查我的答案。
        函数($scope)中的
        $scope
        是一个别名。您可以将其重命名为
        函数(范围)
        。不可以。请参阅更新的回答。不确定您是否在代码块中将
        $scope
        重命名为
        scope
        。请使用下面的工作代码检查我的回答。