【发布时间】:2025-12-11 04:10:02
【问题描述】:
我正在尝试创建一个可编辑的网格,其中有一个可编辑的 dateField。只有当单元格被聚焦时,单元格才会显示为可编辑
$scope.gridOptions = {
data: 'result',
enableCellSelection: true,
enableRowSelection: false,
enableCellEditOnFocus: true,
multiSelect: false,
columnDefs: [
{ field: 'name', displayName: 'Name', enableCellEdit: false, width: 60 },
{ field: 'age', displayName: 'Age', enableCellEdit: false, width: 60 },
{ field: 'sex', displayName: 'Sex', enableCellEdit: false, width: 90 },
{ field: 'dob', displayName: 'DOB', width: 150,
editableCellTemplate: '<input type="text" datepicker-popup="dd/MM/yyyy" is-open="true" ng-input="COL_FIELD" ng-model="COL_FIELD" datepicker-append-to-body=true />',
}
]
};
在editableCellTemplate 中,如果我没有使用is-open="true",则不会弹出。如果我不使用ng-input="COL_FIELD",则焦点不会从任何单元格中移除。所以,datepicker 没有被隐藏。但是如果我同时使用两者,则不会选择 value。在控制台中,错误显示为Expression 'true' used with directive 'datepickerPopup' is non-assignable!
* 上有很多关于这个的问题。我几乎尝试了所有,但没有成功。
可以做什么?我怎样才能消除错误?请为我提供一个工作的plunker。我无法用 plunker 创建这个问题。
编辑
我想,我无法删除错误。错误还是一样
Expression 'true' used with directive 'datepickerPopup' is non-assignable!
我怎样才能删除它?删除它后,我相信它会起作用。我尝试将它作为范围变量并引用它,但是当我使用 Inspect 元素检查它时,值没有被替换为 true。如果我将它用作变量并连接模板中的值,如 'is-open="' + $scope.dateFormat.opened + '"' ,仍然存在相同的错误。
编辑 2
这个is-open 是做什么用的?在某处我看到它的价值等于true,某处只是opened。在here in * 的示例之一中,它只是opened1 和opened2。这是什么?以及如何使用它?
我已经使用bcombs 技术消除了错误
编辑 3
经过进一步调试,我发现datePicker正在打开(如果我使用bcombs提到的方法)但是它一打开就关闭了。
$scope.$on('ngGridEventStartCellEdit', function () {
debugger;
});
编辑 4
从更多的操纵我得出的结论是
如果使用ng-input,则它会破坏2 路绑定。即如果您更改日期值文本字段,那么它会在 datePicker 中反映出来,但如果您尝试使用 datePicker 更改值,它将不会反映在 textField 中。
如果您删除 ng-input,这 2 路绑定仍然正确,所以它可以工作,但这会导致 ngGridEventEndCellEdit 事件未触发。所以,重点不会迷失。值被选中,datePicker 被关闭(如果改为 enableCellEditOnFocus:true,我使用 enableCellEdit:true),但焦点仍然在 textField..
需要帮助。希望更新有助于解决问题
【问题讨论】:
-
那么您是说,当您仅复制您认为是 plunker 中的问题的一段代码时,问题不会出现?如果是这种情况,那么问题出在代码的其他地方。
-
@JoseM 不,我的代码甚至无法正常工作,我什至没有得到与本地相同的结果
-
@VivekVardhan 你能提供一个 plnkr 作为基础吗?
-
@ChristophHegemann 我在plnkr.co/edit/vFwGkoBzIoFvGICH0QYW?p=preview 添加了plunker,它显示了我所说的行为。我也做了一些更新,这可能有助于解决问题
-
@JoseM 请查看更新和我在上面评论中分享的 plunker 链接
标签: angularjs datepicker angular-ui-bootstrap