设置变量并在ng-repeat

时间:2015-10-23 23:02:20

标签: javascript angularjs

我试图将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>

1 个答案:

答案 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