--- HTML ---
<div class="btn-group menuSection">
<div class="menuGrid" ng-repeat="main in mains">
<button type="button" class="btn btn-default btn-sm btn-block"
ng-value="main" btn-radio="main" ng-model="$parent.selectedMain"
ng-click="setDish();"/>
{{main}}
</div>
<div class="menuGrid">
<input type="text" class="form-control input-sm"
ng-model="mainOtherText" ng-show="selectedMain == 'Other'"
placeholder="enter other here"/>
</div>
test : {{mainDish}}
</div>
--- JS ---
$scope.setDish = function(){
if ($scope.selectedMain == 'Other') {
$scope.mainDish = $scope.mainOtherText;
}
else {
$scope.mainDish = $scope.selectedMain;
}
};
我有一个用于选择菜单项的单选按钮网格,其中最后一个是&#39;其他&#39;。当&#39;其他&#39;选中后,文本框会显示用户输入另一个项目的位置。我的ng-click功能的目标是使用其他文本框中的值更新变量mainDish,其他&#39;其他&#39;被选中。
此代码有效,但问题出现在变量mainDish仅在取消选择单选按钮时才更新。
示例 - 首次单击按钮时,它对变量mainDish没有影响,但是当单击另一个按钮时,mainDish将更新为单击的第一个按钮的值。
关于为什么会发生这种情况的任何想法或我可以解决的方法?
编辑: 根据评论,我会更多地解释我的代码。我有一个菜单,一个用户选择的餐点列表。此列表由ng-repeat命令填充,从一系列餐食中获取并为每个菜单创建一个单选按钮。数组中的最后一项是名为&#39;其他&#39;的项目。当&#39;其他&#39;如果选中,则会出现一个文本框,以便用户可以输入自己的菜肴。
我想要的是:我希望为变量mainDish分配&#39;其他&#39;文本框当&#39;其他&#39;选择了收音机盒。对于所有其他项目,mainDish的值只是单选按钮的值,但&#39;其他&#39;的情况并非如此。
我有什么:它有效!但奇怪的是。仅当取消选择单选按钮时,才会更新变量mainDish。每次单击新的单选按钮时,变量mainDish都会被赋予前一个按钮的值。这是我需要帮助解决的问题。
答案 0 :(得分:3)
问题是opDict = {}
for key in list2:
opDict[str(key)] = 0
for elem in list2:
for dictElem in list1:
if str(elem) in dictElem:
opDict[str(elem)] += int(dictElem[str(elem)][0])
在更新范围的ng-click
代码之前触发。如果您将其更改为使用ng-model
,则会修复它。您还需要在文本框中添加ng-change
,以便在用户输入时更新范围。
ng-change
以下是一个工作示例:http://jsfiddle.net/bnzwx94b/2/