bla*_*jid 7 javascript forms angularjs ng-switch
当我得到de form的名字时,我正试图从控制器的范围中获取一个表单对象.它工作正常,但如果我使用ng-switch创建表单,表单永远不会显示在范围内.
风景
<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>
Run Code Online (Sandbox Code Playgroud)
控制器
app.controller('MainCtrl', function($scope) {
$scope.type = 1;
$scope.showScope = function(){
console.log($scope);
};
});
Run Code Online (Sandbox Code Playgroud)
如果我删除了ng-switch,我可以从$ scope中看到属性"theForm"作为形式obj.
知道如何做到这一点.我不希望这两个表单具有不同的名称并使用ng-show.
以下是"不工作" http://plnkr.co/edit/CnfLb6?p=preview的示例
这是因为ngSwitch创建了新的范围.(如果你看看$$childHead得到的范围的值console.log,你可以theForm在里面看到.这是ngSwitch范围).
如果表单始终是同一个名称,您可以简单地将ngSwitches放在表单中:
<form name="theForm">
<div ng-switch on="type">
<div ng-switch-when="1">
<label>Form 1</label>
<input type="text"/>
</div>
<div ng-switch-when="2">
<label>Form 2</label>
<input type="text"/>
</div>
</div>
</form>
Run Code Online (Sandbox Code Playgroud)