我不知道我遇到的是否是一个错误,但我似乎无法在只有一个选项的 Angular JS 1.0.2(也用 1.1.5 测试)中重置选择框。这是一个用 Phonegap 包装的 iPad 应用程序。我已经在浏览器(Safari、Chrome)中进行了测试,但问题仍然存在。
我正在开发一个应用程序,其中包含许多不同类别和子类别的产品。当您选择一个类别时,路线会更改并且通常会重置选择框。它看起来像这样:
但是,如果您要选择一个选项,然后在子类别的选择框中只有一个选项时决定选择另一个子类别(当用户单击其中一个显示“其他产品”的图像时)选择框未正确重置。然后用户不能从该点前进到下一个选择框。它看起来像这样:
通过从各种资源中提出这个功能,我几乎已经让它工作了,但似乎 Angular 很古怪。到目前为止,它看起来像这样:
问题是我希望空格在选项之前,而不是之后。然后用户必须单击第二个空白选项,然后再次单击该选项以激活第二个选择框。
这是JS:
$scope.reset = function() {
$scope.variants.selectedIndex = 0;
};
这是 JSON。请注意,这些变体集具有相同的大小:
1: {
name: 'Super Awesome Product',
description: 'Cool description',
category: 'viewers',
variants: {
1: {
color: 'Gold',
size: '55-62mm',
productCode: 'FCSTVG',
price: 0,
image: [path + 'FCSTVG-T.png', path + 'FCSTVG.png']
},
2: {
color: 'Silver',
size: '55-62mm',
productCode: 'FCSTVS',
price: 0,
image: [path + 'FCSTVS-t.png', path + 'FCSTVS.png']
}
}
}
};
以及选择框的 HTML:
<select ng-model="selectedVariant" ng-show="variants != null">
<option ng-repeat="size in variants" value="{{size}}">
{{size[0].size}}
</option>
</select>
reset()
以及点击my 的 HTML 。就像我说的,这些是下面图片的“其他产品”:
<div class="other-products">
<h2>Other products</h2>
<div class="slide-container">
<ul ng-show="products != null" style="width: {{products.length * 112}}px">
<li ng-repeat="p in products" ng-show="findDefaultImage(p) != null">
<a href="#" eat-click ng-click="selectProduct(p.id);reset()">
<img ng-src="{{findDefaultImage(p)}}" alt="" />
</a>
</li>
</ul>
</div>
</div>
我已经尝试了所有方法,例如向该行添加不同的值,$scope.variants.selectedIndex = 0;
例如 -1 或 1。
任何帮助,将不胜感激!
更新:我通过硬编码解决了这个问题。不知道为什么我以前不这样做,但我仍然支持@Shawn Balesstracci 的回答,因为它回答了这个问题。
Angular 倾向于清空选择框的“索引 0”,将选择框中的所有选项推回 1,但实际上用户选择的选项实际上是下拉列表中的下一个选项。我不知道这是一个错误还是一个功能。
这是我对 HTML 进行硬编码的方式:
<select ng-model="selectedVariant" required="required" ng-show="variants != null">
<option style="display:none" value="">PICK ONE:</option>
<option ng-repeat="size in variants" value="{{size}}">
{{size[0].size}}
</option>
</select>
这会阻止 Angular 推回下拉菜单中的选项。