1

我正在维护一个站点,该站点允许用户创建各种配置文件,以允许他们将活动广播到提要。我实现了 ng-grid 来跟踪所有创建的配置文件,并创建了两个按钮,允许用户创建/编辑这些配置文件。我现在唯一的问题是,当用户在网格上选择一行并尝试编辑该特定行时,下拉菜单不会自动填充来自 ngModel 的数据。

这是我遇到问题的表格的一部分:

<select ng-model="source.canSendTo" ng-options="value.name for value in sourceCanSendTo" data-style="btn" bs-select></select>

在控制器中,我将 sourceCanSendTo 定义为:

$scope.sourceCanSendTo = [ {"id":"abc", "name": "ABC"}, {"id":bcd", "name": "BCD"} ... ];

在行选择时,我只需设置 source = 所选项目,console.logs 显示所有数据都在那里。表单的其他部分正在正确填充(主要是 s),并且 console.log($scope.source.canSendTo) 显示原始数据在那里,只是选择默认为空白......我怎么会尝试在我目前拥有的下拉选择中预先选择某些元素?

例如,如果配置文件选择了“abc”、“bcd”,我怎样才能使当我编辑该配置文件时,下拉框显示“abc,bcd”而不是“未选择”?

编辑:我之前回复了一条询问 bs-select 的评论,说它只是控制了下拉框的一些 CSS 元素——在谷歌快速搜索后似乎这完全不正确,而其他一切都导致了死胡同。有谁知道如何用数据正确初始化模型,以便在我预加载表单时,“可以发送到”下拉选择实际上选择了选定的选项,而不是说“没有选择”?提前感谢所有帮助!

4

3 回答 3

2

当您将 source.canSendTo 绑定到 sourceCanSendTo 的名称(value.name)时,您只需要最初有一个绑定已保存名称的结构,如下所示:

source.canSendTo = ['abc', 'bcd']; //And all the selected values

所以你需要为这个结构构造你的 source.canSendTo 属性。

PS:如果您展示如何从服务器获取数据,我可以帮助您构建 source.canSendTo 属性。

于 2014-07-22T04:22:15.960 回答
0

$scope.canSendTo 必须使用对所选选项的引用进行初始化。

var initialSelection = 0;
$scope.source = { canSendTo : [ {"id":"abc", "name": "ABC"}, {"id":bcd", "name": "BCD"} ... ] };
$scope.canSendTo = $scope.source.canSendTo[initialSelection];
于 2014-07-22T04:29:58.627 回答
0

终于发现我的代码出了什么问题 - 似乎存储在模型中的数据与 ngOptions 中的数据不同,使用 ngOptions 进行了一些操作,并设法得到了一些有用的东西。工作代码片段:

<select ng-model="sendTo.name" ng-option="value.name as value.name for value in sourceCanSendTo" data-style="btn" multiple bs-select>

(意识到用于 ngModel 的变量在命名约定方面相当模棱两可,更改了它)

于 2014-07-24T16:23:53.147 回答