Angularjs 在中完成布线后无法选择图元

Angularjs 在中完成布线后无法选择图元,angularjs,Angularjs,我想验证我的表单,就像。但我也在使用ui路由器,我的表单字段在另一个部分页面中。因此,我无法选择我的表单,如下所示 if ($scope.userForm.$valid) { alert('our form is amazing'); } 在控制台中,我得到了这个错误。TypeError:无法读取未定义的属性“$valid” 那么我应该怎么做来捕获来自partials的表单字段呢 顺便说一下,这些是我的密码 var app = angular.modul

我想验证我的表单,就像。但我也在使用ui路由器,我的表单字段在另一个部分页面中。因此,我无法选择我的表单,如下所示

if ($scope.userForm.$valid) {
            alert('our form is amazing');
        }
在控制台中,我得到了这个错误。TypeError:无法读取未定义的属性“$valid”

那么我应该怎么做来捕获来自partials的表单字段呢

顺便说一下,这些是我的密码

var app = angular.module("App",['ui.router']);

app.controller("Controller", function($scope){

    $scope.Go = function(){
        alert($scope.name);
        if($scope.userForm.$valid){
            alert("Valid");
        }
        else{
            alert("No Valid");
        }
    }

});

app.config(function ($stateProvider, $urlRouterProvider) {

$urlRouterProvider.otherwise('/');

$stateProvider
    .state('/', {
        url: '/',
        templateUrl: 'input.html'
    })
})

这是我的index.html

<div ng-controller="Controller">
<ui-view></ui-view></div>
这是我的partial.html

<form name="userForm">
    <input type="text" ng-model="name"/>
    <button ng-click="Go()">Go</button></form>

基本上,您需要将表单指向父作用域,如$parent.userForm&要访问表单值,请在ui视图的父控制器内初始化表单对象,如$scope.form={}。然后,我们将在其中放置所有表单级别的值

HTML

input.html


希望这能帮助你,谢谢。

你可以照@pankajparkar说的做。或者您需要修改您的状态:

$stateProvider
    .state('/', {
        url: '/',
        templateUrl: 'input.html',
        controller: 'Controller'
    });
然后卸下ng控制器=控制器


UI路由器将自动加载给定状态的指定控制器,并将其绑定到input.html。

您的表单名称应为frm,而不是输入htmlIn中的userForm我的代码,我已更改表单名称。原因不是表单名。@baasr sen那么请在这里添加您的代码。.我更新了代码@Pankajparkano等等,我没有看到您在ui视图的外部定义了ng控制器。你需要照@pankajparkar说的做,或者移除ng控制器,让UI路由器来处理。是的!这很有效。但是为什么它总是返回无效?@BasarSen那是我的错..plunkr包含错误的代码,请检查更新的plunkr..非常感谢。我很感激。这对我的工作非常重要:@BasarSen很高兴能帮助你。谢谢:
app.controller("Controller", function($scope) {
  $scope.form = {};
  $scope.Go = function() {
    alert($scope.form.name);
    if ($scope.userForm.$valid) {
      alert("Valid");
    } else {
      alert("No Valid");
    }
  }

});
<form name="$parent.userForm">
  <input type="text" ng-model="form.name" />
  <button ng-click="Go()">Go</button>
</form>
$stateProvider
    .state('/', {
        url: '/',
        templateUrl: 'input.html',
        controller: 'Controller'
    });