2016-12-16 72 views
0

有什么办法,我可以得到呈现形式进入

$ rootScope.on( “$ stateChangeStart”,函数(){

})

我尝试了两件事。 首先:使用$ template Request我使用templateURL获得了模板,并对其进行了编译,但它呈现的是预定义的模板而不是DOM的呈现。

看到代码

if (fromState.name.length > 0) { 
    $templateRequest(fromState.templateUrl) 
    .then(function (html) { 
     var compiledElement = $compile(html)($rootScope); 
     var compliedForm = compiledElement.find('form'); 
    } 
} 

再其次,我尝试使用

angular.element('document').find('form'); 

但它给我的属性,所有的名单。但是如何获得支票表格是否有效。

文件

enter image description here

+0

'angular.element( '文件')找到( '形式')控制器(“form”)。$ valid;'但我认为这里真正的问题是你想要达到什么目的?它看起来像你试图以非角度的方式做一些事情 – devqon

+0

这*感觉就像*一个[XY问题](http://meta.stackexchange.com/a/66378/297619)。完全不明白你想要完成什么,或者你为什么需要渲染表单。 – Claies

+0

@devqon, 我想检查表格是否有效或者没有对stateChange进行检查。如果表单无效,那么我想显示弹出消息。 –

回答

1

我想你想达到什么目的,是要阻止的状态改变时,在当前视图形式是无效的。我会做这个指令,是这样的:

app.directive("formValidStateCheck", function($rootScope) { 
    return { 
     restrict: "A", 
     require: "ngForm", 
     link: function(scope, element, attrs, ngFormCtrl) { 
      $rootScope.$on("$stateChangeStart", function(event) { 
       if (ngFormCtrl.$invalid) { 
        // prevent routing 
        if (!confirm("Are you sure")) 
         event.preventDefault(); 
        } 
       } 
      }); 
     } 
    } 
}); 

不是把该指令对您的形式:。

<form ng-form="myForm" form-valid-state-check> 

</form> 
0

.find()方法不会选择和标签名称的工作。你需要通过表单id来获取它(因为这个表单有一个id)。

然后使用angular.element(document.getElementById("#form_id"));