我对AngularJS有疑问,但我还没找到帮助我的工具。我有一个选择框来选择状态。
我需要更新我的" ng-model"当我提交表格时,所以ng-model-options在这里很好。
我的问题是,如果我的选项是" status_2"我需要显示输入文字:
<ul>
<li ng-repeat="product in products">
<form>
<select ng-model="product.myStatus" class="form-control" ng-model-options="{updateOn: 'submit'}" required>
<option value="status_1">{{'status_1' | translate}}</option>
<option value="status_2">{{'status_2' | translate}}</option>
</select>
<div ng-show="product.myStatus == 'status_2'">
<input type="text" ng-model="product.comment" class="form-control" ng-required="product.myStatus == 'status_2'">
</div>
<input type="submit" />
</form>
</li>
</ul>
但它不起作用。输入文字不会出现。我知道为什么,但我不知道如何做到这一点,如果我能以另一种方式做到这一点。
我的AngularJS版本是1.5.5。
答案 0 :(得分:0)
ng-model-options表示模型仅在您点击提交时更新。我不认为你想要这个。
-------------------------原始评论-------------
我不确定ng-model-options是什么,但当我删除它时,显示/隐藏更新很好:
<select ng-model="product.myStatus" class="form-control" xxxng-model-options="{updateOn: 'submit'}" required>
<option value="status_1">{{'status_1'}}</option>
<option value="status_2">{{'status_2'}}</option>
</select>
答案 1 :(得分:0)
模型在'submit'上更新。我想你可以尝试ng-model-options="{updateOn: 'blur'}"
模型值会在'模糊'上改变。
答案 2 :(得分:0)
考虑一下。使用产品的副本进行循环。然后,在验证和提交时,将产品更新为新值:
HTML:
<li ng-repeat="product in temp">
JS:
$scope.products = [{myStatus: "status_1"},{myStatus: "status_2"}];
$scope.temp = angular.copy($scope.products);
$scope.submit = function(){
$scope.products = angular.copy($scope.temp);
}