AngularJS - 控制器中的参数绑定

时间:2014-06-12 12:19:53

标签: javascript html angularjs visual-studio-2013 angularjs-directive

我已经获得了以下代码示例,显然我再次缺少一些背景信息。

当我使用greet指令时,控制器级别会发生绑定。由于某种原因,它将元素和元素的属性值绑定到相应的变量($attr$element)。

是否有一个列表,其中包含控制器存在的所有现有绑定?

我做过一些研究,但无法在这方面做出任何事情。

directives.js

angular.module('TodoApp.directives', []).    
    directive('greet', function () {
    return {
        template: '<h2>Greetings from {{from}} to {{to}}<h2>',
        controller: function($scope, $element, $attrs) {
            $scope.from = $attrs.from;
            $scope.to = $attrs.greet;
        }
    };
});

list.html

....
<div greet="Test1" from="Test2"></div>
...

2 个答案:

答案 0 :(得分:1)

这称为依赖注入。 Angular不是使用固定的参数列表,而是使用DI容器在需要时注入参数。例如,如果您需要$ http服务,只需将其添加为参数 - 参数的顺序无关紧要。

您可以注入的参数类型是常量,值,工厂,服务和提供程序。

Angular库中的一些“开箱即用”可用: Look here for Angular Providers and Services

其他人,您可以从第三方模块或自己开发的模块中获取。

答案 1 :(得分:1)

指令控制器有一些特殊的绑定。您可以在$compile服务(here)的文档中找到它们,搜索&#34; controller&#34;。在此重复完整性:

  

控制器是可注射的(并支持括号表示法),具有以下本地:

     
      
  • $scope - 与元素相关的当前范围
  •   
  • $element - 当前元素
  •   
  • $attrs - 元素的当前属性对象
  •   
  • $transclude - 预先绑定到正确的转换范围的转换链接函数。范围可以由可选的第一个参数覆盖。 function([scope], cloneLinkingFn)
  •