Javascript 带ng开关的角形

Javascript 带ng开关的角形,javascript,forms,angularjs,ng-switch,Javascript,Forms,Angularjs,Ng Switch,当我得到一个要反格式化的名称时,我试图从控制器的作用域中获取一个表单对象。 它工作得很好,但是如果我使用ng开关创建表单,那么表单永远不会显示在范围中 景色 如果删除ng开关,则可以将$scope中的属性“theForm”视为表单obj 你知道怎么做吗。我不想让这两个表单使用不同的名称和ng show 以下是“不工作”的示例 这是因为ngSwitch创建了新的作用域。(如果查看get的控制台.log'd作用域的$$childHead值,可以看到其内部的表单。这是ngSwitch作用域) 如果表单

当我得到一个要反格式化的名称时,我试图从控制器的作用域中获取一个表单对象。 它工作得很好,但是如果我使用ng开关创建表单,那么表单永远不会显示在范围中

景色

如果删除ng开关,则可以将$scope中的属性“theForm”视为表单obj

你知道怎么做吗。我不想让这两个表单使用不同的名称和ng show

以下是“不工作”的示例
这是因为
ngSwitch
创建了新的作用域。(如果查看get的
控制台.log
'd作用域的
$$childHead
值,可以看到其内部的
表单。这是
ngSwitch
作用域)

如果表单始终使用相同的名称,只需将
ngSwitch
es放入表单中即可:


表格一
表格二

谢谢,通过您的回答,我学到了比我预期的多得多的东西。我们可以将
ng开关on
作为一个属性使用,而不是将其作为一个单独的标记,以提高可读性。例如:
@Abilash确实如此,但如果您关心IE8及以下版本,请务必按照@Brandon使用
document.createElement
,我认为这在IE8上也可以。我已经在我的应用程序中使用了它,幸运的是直到今天都没有问题。在这上面花了一个小时。我的症状是$valid和$dirty对我不可用。
<body ng-controller="MainCtrl">

    <div ng-switch on="type">
      <form name="theForm" ng-switch-when="1">
        <label>Form 1</label>
        <input type="text"/>
      </form>
      <form name="theForm" ng-switch-when="2">
        <label>Form 2</label>
        <input type="text"/>
        <input type="text"/>
      </form>

    </div>

    <button ng-click="showScope()">Show scope</button>
</body>
app.controller('MainCtrl', function($scope) {
  $scope.type = 1;

  $scope.showScope = function(){
    console.log($scope);
  };
});