来自控制器的视图上下文中的dom元素

时间:2014-12-04 13:50:55

标签: javascript jquery angularjs dom

我在角度视图中有一个表单。在表单上的按钮中,我添加了一个事件,使用$ http向服务器发送请求。在将请求发送到服务器之前,我需要使用jQuery Validate验证表单。

要验证表单,我需要控制器中表单的dom引用。我已经在我的应用程序中使用了jQuery。所以可以使用

获取表单的引用
$(selecter) or angular.element($(selecter))

但在这两种情况下,它都会搜索完整的文档以获取元素的引用。而不是我需要在视图的上下文中搜索元素,这将提高性能。

我已经看到在角度中使用$元素。但后来我发现不建议使用$ element,并且可能会在新版本的angular中折旧。当我试图在控制器中获取$元素时,我收到了一个错误。所以我猜它已经贬值了。

那么在控制器的视图上下文中获取dom元素的最佳方法是什么?

2 个答案:

答案 0 :(得分:1)

正如米卡莱所说。要使用任何元素进行操作,你必须创建指令(这是有角度的方式..)

举个例子:

  • html <input type="text" select-all value="test" />
  • 指令

    app.directive('selectAll', function () {
    return {
        restrict: 'A',
        link: function(scope, element, attrs) {
            element.on('click', function() {
                this.select();
            });
        };
    });
    

该指令只选择文本元素中的所有文本。

<强>更新

我为你创建了plunker。这是你要的吗?

更新2

我刚才意识到,我们根本不需要eval。我不知道,为什么我把它放在那里。 Eval也可能是有害的。

看看这个plunker

答案 1 :(得分:0)

建议不要在控制器的视图上下文中使用dom元素。要访问dom,您应该创建角度指令。