2016-04-28 52 views
2

有没有一种方法可以将输入元素包装到ngForm指令中? (我需要使用ngForm,这是成asp.net形式)Angular ngForm包裹元素?

angular.module('app',[]) 
 
.controller('formCtrl', function($scope){ 
 

 
    $scope.formFields; 
 
    $scope.model={ 
 
    
 
    "text": 'simple text', 
 
    "number": 1, 
 
    "textarea": 'lsadij isdajo\n dasjojoisajijsdaojsdaio jioasdj' 
 
    
 
    }; 
 
    
 
    $scope.getNgFormInputs = function(e){ 
 
    
 
     $scope.formInfo = $scope.myFrm 
 
     $scope.formFields = angular.noop //??? is it possible to get wrapped inputs? 
 
    
 
    } 
 

 

 
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.4.8/angular.min.js"></script> 
 

 
<div ng-app="app"> 
 
    <div ng-controller="formCtrl"> 
 
    
 
    <div ng-bind="model.text"></div> 
 
    <div ng-bind="model.number"></div> 
 
    <pre ng-bind="model.textarea"></pre> 
 
    
 
    <ng-form name='myFrm'> 
 
     
 
     <input type="text" ng-model="model.text"><br> 
 
     
 
     <input type="text" ng-model="model.number"><br> 
 
     
 
     <textarea ng-model="model.textarea"></textarea><br> 
 
     
 
     <button ng-click="getNgFormInputs($event)" role="submit">Save</button> 
 
     
 
     </ng-form> 
 

 

 
    {{formInfo}}<hr> 
 
    {{formFields}} 
 
    </div> 
 
</div>

韩国社交协会

+0

什么是你想实现的,在更高层次上?这听起来像是一个XY问题。 –

+0

是的,这可能是一个XY问题。这段代码只是一个概念。在我的真实世界中,(A)$ scope.model是一个更大的对象,我正在更新它的一部分。 (B)时间不多了,所以我硬编码了表单元素,而不是使用获取模型[prop]数组属性的指令来编译它们(它可以解决我的问题)。 (C)因此,为了节省时间,我不想一次又一次地写入已经包装到我的ngForm中的[{prop:val}]。我也不想使用jQuery。无代码,永远。这是否澄清? Tks“ – egidiocs

+0

@JBNizet,你能否详述一下你的想法?有些场景Syed的回答不适用Tks – egidiocs

回答

0
+0

tks,input元素中缺少的attr属性让我不想实现它简单的代码行,我很好去:$ scope.formFields = Object.keys($ scope.myNgForm).filter(x =>(!/^\ $ /。test(x))) – egidiocs

0

感谢赛义德,参考解决我的问题。

我建议人们在thw答案中阅读我自己的评论。

angular.module('app',[]) 
 
.controller('formCtrl', function($scope){ 
 

 
    $scope.formFields; 
 
    $scope.model={ 
 
    
 
    "text": 'simple text', 
 
    "number": 1, 
 
    "textarea": 'lsadij isdajo\n dasjojoisa \n jijsdaojsdaio jioasdj' 
 
    
 
    }; 
 
    
 
    $scope.formFieldsAndValues = {} 
 
    
 
    $scope.getNgFormInputs = function(e){ 
 
    
 
     
 
     $scope.formFields = keys = Object.keys($scope.myFrm).filter(x => (!/^\$/.test(x))) 
 
     keys.forEach(x=> $scope.formFieldsAndValues[x] = $scope.myFrm[x].$viewValue) 
 
    
 
    } 
 

 

 
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.4.8/angular.min.js"></script> 
 

 
<div ng-app="app"> 
 
    <div ng-controller="formCtrl"> 
 
    
 
    <div ng-bind="model.text"></div> 
 
    <div ng-bind="model.number"></div> 
 
    <pre ng-bind="model.textarea"></pre> 
 
    
 
    <ng-form name='myFrm'> 
 
     
 
     <input type="text" ng-model="model.text" name="text"><br> 
 
     
 
     <input type="text" ng-model="model.number" name="number"><br> 
 
     
 
     <textarea type="text" ng-model="model.textarea" name="textarea"></textarea><br> 
 
     
 
     <button ng-click="getNgFormInputs($event)" role="submit">Save</button> 
 
     
 
     </ng-form> 
 
<hr> 
 
form fields: 
 
    {{formFields}} 
 
    <hr> 
 
field,value pairs: 
 
    {{formFieldsAndValues}} 
 
    </div> 
 
</div>