Javascript 带ng开关的角形
当我得到一个要反格式化的名称时,我试图从控制器的作用域中获取一个表单对象。 它工作得很好,但是如果我使用ng开关创建表单,那么表单永远不会显示在范围中 景色 如果删除ng开关,则可以将$scope中的属性“theForm”视为表单obj 你知道怎么做吗。我不想让这两个表单使用不同的名称和ng show 以下是“不工作”的示例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作用域) 如果表单
这是因为
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);
};
});