Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/21.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 Angularjs:在控制器中获取元素_Javascript_Angularjs - Fatal编程技术网

Javascript Angularjs:在控制器中获取元素

Javascript Angularjs:在控制器中获取元素,javascript,angularjs,Javascript,Angularjs,我是angularjs的新手,我知道$scope表示控制器和视图之间的连接,但是除了寻找class=“ng scope”获取scope元素之外,还有其他方法吗,我的意思是: function someControllerFunc($scope){ $scope.element; } 我知道同一个控制器可以分配给多个作用域,所以这可能是不可能的。您可以将元素传递给控制器,就像作用域一样: function someControllerFunc($scope, $element){

我是angularjs的新手,我知道
$scope
表示控制器和视图之间的连接,但是除了寻找
class=“ng scope”
获取scope元素之外,还有其他方法吗,我的意思是:

function someControllerFunc($scope){
       $scope.element;
}

我知道同一个控制器可以分配给多个作用域,所以这可能是不可能的。

您可以将元素传递给控制器,就像作用域一样:

function someControllerFunc($scope, $element){

}

$element
$compileProvider
提供给
$controllerProvider
的四个局部变量之一,然后将其提供给
$injector
。只有在被要求时,注入器才会在控制器函数中注入局部变量

这四名当地人是:

  • $scope
  • $element
  • $attrs
  • $transclude
正式文件:

源代码来自:


我不知道你的确切意思,但希望能对你有所帮助。
通过此指令,您可以访问控制器内部的DOM元素
这是一个帮助您聚焦控制器内部元素的示例

.directive('scopeElement', function () {
    return {
        restrict:"A", // E-Element A-Attribute C-Class M-Comments
        replace: false,
        link: function($scope, elem, attrs) {
            $scope[attrs.scopeElement] = elem[0];
        }
    };
})
$scope.fnRenderCarousel = function(elName){
    $($scope[elName]).carousel();
}
现在,在HTML内部

<input scope-element="txtMessage" >

创建自定义指令

masterApp.directive('ngRenderCallback', function() {
    return {
        restrict: "A",
        link: function ($scope, element, attrs) {
            setTimeout(function(){ 
                $scope[attrs.ngEl] = element[0];
                $scope.$eval(attrs.ngRenderCallback);               
            }, 30);
        }
    }
});
html模板的代码

<div ng-render-callback="fnRenderCarousel('carouselA')" ng-el="carouselA"></div>

获取scope元素是什么意思?你是说控制器声明的元素吗?你不应该从控制器中访问任何DOM元素!这正是Angular试图阻止的行为类型!!任何类型的DOM交互都只能通过指令进行,而不能在控制器中进行。事实上,经过进一步研究,
$element
的可能副本并不是访问该元素的好方法,而且正在被删除。您可能想用一个来做这个。@apohl,您在哪里读到它被弃用的消息?你提供的链接没有提到这一点,我在文档中也找不到任何关于它被弃用的内容…@apohl,在任何评论中都没有提到
$element
被弃用。。。我需要知道它是否会被弃用,因为我们在几个地方的应用程序中都使用它,所以我想在升级时注意一下…@kentcdoff,好的,你是对的。弃用是错误的术语。因此,该方法可以工作,但它不是建议的用法。@apohl——有时您会情不自禁地使用它,例如在模式/弹出式场景中,您基本上是使用
$compile
服务手动创建指令,以将元素与控制器绑定。我同意,这是一个混乱而不优雅的解决方案,但编程中充满了这些,对吗?=)我认为您应该使用一个指令而不是元素来实现这样的功能,check,但这仍然是一个展示如何在控制器中获取元素的好例子
<div ng-render-callback="fnRenderCarousel('carouselA')" ng-el="carouselA"></div>
$scope.fnRenderCarousel = function(elName){
    $($scope[elName]).carousel();
}