我试图将ng-repeat中的值传递给我的AngularJS控制器。我不觉得我知道什么在做什么了。我一直在尝试不同的改变,但没有成功。
我的目标是 1)在下拉框中显示一个数组作为选项。 2)然后让用户选择一个选项 3)单击将该选项提交给Angular函数的按钮。
我知道Angular函数(我没有在此示例中包含)正在运行,因为我可以静态地向其传递值并查看我期望的更新。问题是如何捕获变量中的用户选择,我可以将其作为参数传递给名为$scope.changeHost(newHost)
的$ scope函数。以下是我遇到问题的AngularJS HTML:
<form ng-submit="changeHost(newHost)">
<select type="text" class="form-control" ng-model="eveSingle.evePlayers">
<option ng-selected="{{eveSingle.evePlayers}}" value="{{eveSingle.evePlayers}}" ng-repeat="player in eveSingle.evePlayers">{{player}}</option>
</select>
<input class="btn submit-btn" type="submit" value="Change GM" />
</form>
以下是(现已放弃的)修改后的代码,按照我的意图运行:
<form ng-submit="changeHost(eveSingle.eveHost)">
<select type="text" class="form-control" ng-model="eveSingle.eveHost" ng-options="player for player in eveSingle.evePlayers">
<option type="text" value="{{eveSingle.evePlayers}}">{{player}}</option>
</select>
<input class="btn submit-btn" type="submit" value="Change GM" />
</form>
由于下面的评论,这是最终更新。一旦我更改为ng-options
,我的代码中就不再需要HTML选项了。当我删除它时,这一点仍然正常。
<form ng-submit="changeHost(eveSingle.eveHost)">
<select class="form-control" ng-model="eveSingle.eveHost" ng-options="player for player in eveSingle.evePlayers">
</select>
<input class="btn submit-btn" type="submit" value="Change GM" />
</form>
答案 0 :(得分:1)
用户选择是绑定到public static ArrayList<String> getAlreadyProcessedPhotos(Context context, ArrayList<String> photos, SQLiteDatabase db)
{
ArrayList<String> notAlreadyProcessedPhotos = new ArrayList<>();
for(String path : photos)
{
File imgFile = new File(path);
if (!Utils.isAlreadyProcessed(context, imgFile, db))
{
notAlreadyProcessedPhotos.add(path);
}
}
return notAlreadyProcessedPhotos;
}
public static boolean isAlreadyProcessed(Context context, File imgFile, SQLiteDatabase photosDb) {
if(photosDb == null || !photosDb.isOpen())
photosDb = new DatabaseHelper(context).getReadableDatabase();
String searchQuery = "SELECT * FROM " + DatabaseHelper.TABLE_NAME + " WHERE " + DatabaseHelper.PATH_COLUMN + "=?";
Cursor cursor = photosDb.rawQuery(searchQuery, new String[] {imgFile.getAbsolutePath()});
boolean result = cursor.moveToFirst();
cursor.close();
return result;
}
的变量的值。因此,将ng-model
更改为ng-model="eveSingle.evePlayers"
(根据您的需要调整名称),并将所选播放器传递给ng-model="eveSingle.selectedPlayer"
:
changeHost
请注意,您应该删除ng-submit="changeHost(eveSingle.selectedPlayer)"
和ng-selected="{{eveSingle.evePlayers}}"
(这适用于输入元素)。
作为旁注,请注意您可以(应该)使用type="text"
选项上的ng-options
语法。第一个允许您绑定模型以外的其他类型而不是字符串,而且它更有效,因为它不会为每个选项创建隔离的范围。会是这样的:
ng-repeat