当前位置: 首页 > 面试题库 >

在ui网格editableCellTemplate [ng-grid 3.x]中使用ng-option下拉列表

管峻
2023-03-14
问题内容

我正在使用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)您还可以将 cellTemplateeditableCellTemplate 一起添加。您可以分配两个相同的值。

参考文献:

  1. http://ui-grid.info/docs/#/tutorial/305_externalScopes


 类似资料:
  • 我有作为我的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下面有一个更好的答案,我建议您改用它。它使表示逻辑不会进入您的控制器