我正在使用ng-grid的新3.0版本 ui-
grid在我的应用程序中创建网格。我想做的是使表中的可编辑单元格之一成为ng-
options
下拉列表,其中填充了使用角度工厂检索到的数据。
我正在尝试通过使用ui-grid 的editableCellTemplate功能来做到这一点。
这是一些示例代码:
HTML:
<div ui-grid="gridOptions" ui-grid-edit class="grid"></div>
控制器:
$scope.gridOptions = {
enableSorting: true,
enableFiltering: true,
enableCellEditOnFocus: true,
columnDefs: [
{ field: 'name',
sort: {
direction: 'desc',
priority: 1
}
},
{ field: 'gender', editType: 'dropdown', enableCellEdit: true,
editableCellTemplate: 'temp.html' },
{ field: 'company', enableSorting: false }
]};
temp.html:
<div>
<select ng-model="row.entity.gender" data-ng-options="d as d.type for d in genderType">
<option value="" selected disabled>Choose Gender</option>
</select>
</div>
这是代码的小插曲。[ 注意:
这只是示例代码。ng-
options的数组已从Angular工厂以实际代码插入,未在范围中声明。由于数据是动态的,editDropdownOptionsArray可能无法工作。]
可以用ui-grid做到吗?我认为这可能是范围的问题,因为如果我将ng-option代码放在HTML页面中,它将按预期工作,但是我可以从ui-
grid文档中收集到的是temp.html文件应该在范围内。我知道这些内容仍处于不稳定版本中,但对此问题的任何帮助将不胜感激!
2015年3月31日更新:
嗨,大家好,如果您尝试使用此解决方案,但它不起作用,请注意。一月份,外部作用域的代码从重构getExternalScopes()
为grid.addScope.source
。https://github.com/angular-
ui/ng-grid/issues/1379
这是带有新代码的更新的plunkr:单击我!
您需要在ui-grid的3.x版本中使用 external-scopes 功能。之所以无法在选择下拉列表中获得任何选项,是因为ui-
grid现在使用隔离的作用域,这将不允许您在单元格中直接访问应用程序作用域变量。
我能够按照以下步骤操作您的plunkr-
查看最新的plunkr
脚步:
1) 在index.html中,在grid div中指定 external-scopes 属性,即修改
<div ui-grid="gridOptions" ui-grid-edit class="grid"></div>
至
<div ui-grid="gridOptions" ui-grid-edit class="grid" external-scopes="myExternalScope"></div>
2) 在app.js中,将范围分配给我们的external-scope属性,即添加以下行:
$scope.myExternalScope = $scope;
3) 在temp.html中,使用 getExternalScopes() 访问sexTypes数组,即从以下位置修改
editableCellTemplate 值
<select ng-model="row.entity.Gender" data-ng-options="d as d.type for d in genderType">
至
<select ng-model="row.entity.Gender" data-ng-options="d as d.type for d in getExternalScopes().genderTypes">
额外的想法:
1)我没有找到适合我需要的 ui-grid / dropdownEditor- 因此,还没有尝试过。
2)您还可以将 cellTemplate 与 editableCellTemplate 一起添加。您可以分配两个相同的值。
参考文献:
我有作为我的json对象,其中包含一些我想在下拉列表中显示的数据。 但它仍然将我的下拉列表显示为空白。 在这里,我使用的是ng-repeat。 我在这里列出了我的代码。 .HTML: JS:
问题内容: 我正在开发一个页面,我需要在其中显示一些框(使用),其中包含频道信息以及显示位置(城市)。 我面临的问题是当我重复第二遍时: 这应该获得第一个ng-repeat的$ index值,并使用显示频道的位置创建一个新数组。它确实做到了。但是,当我使用此数组应用第二个ng- repeat时,它无法正常工作。 说我的html看起来像这样(PS:我需要使用索引值而不是因为我将这些框放到列中) JS
我想比较一下id,这里,如果id等于5,做这个,否则做那个。我怎样才能做到这一点?
本文向大家介绍AngularJS使用ng-options指令实现下拉框,包括了AngularJS使用ng-options指令实现下拉框的使用技巧和注意事项,需要的朋友参考一下 ng-option指令使用很简单,只需要绑定两个属性: 一个是ng-model用于获取选定的值; 另一个是ng-options用于确定下拉列表的元素数组。 1、问题背景 一般情况下,select下都会有option,但是An
问题内容: 我无法让ng-transclude在ng-switch-default指令中工作。这是我的代码: 指示: partials / formField.html 我这样称呼… 产生错误: 它可以正常工作,在ng-switch指令之外,但是我对如何使它工作感到迷惑。有什么建议? 编辑:这是一个实时演示:http : //plnkr.co/edit/3CEj5OY8uXMag75Xnliq?p
问题内容: 我正在尝试使用bootstrap 3和angularjs创建一个网格。 我要创建的网格就是这个,使用ng-repeat重复进行。 我试着用with 添加行,但这似乎行不通。任何建议都会很棒! 谢谢! 编辑:这是我最终使用的代码: 问题答案: 这是一个老答案! 撰写本文时,我对Angular还是有点陌生。Shivam下面有一个更好的答案,我建议您改用它。它使表示逻辑不会进入您的控制器