使用<input />模板

时间:2015-06-16 19:26:04

标签: angularjs ng-grid

我有以下ng-grid定义:

$scope.gridActivities = {
    data: 'activities'
    , multiSelect: false
    , columnDefs: [
        { field: 'ID', displayName: 'ID', visible: false },
        { field: 'AppliedWorkType.WorkType.Name', displayName: 'Type' },
        { field: 'CreatedOn', displayName: 'Date', cellFilter: 'date:\'MM/dd/yyyy\'' },
        { field: 'NonBillableHours', displayName: 'Unbilled Hours' },
        { field: 'BillableHours', displayName: 'Billed Hours', cellTemplate: '<input type="number" class="form-control" ng-pattern="/^\d{0,9}(\.\d{1,9})?$/" ng-model="row.entity.BillableHours"/>' }
    ]
}

默认情况下加载并显示activities时,输入正确地在BillableHours内具有正确的值,我可以在输入框中看到它们。但是,当我更改值(从5到6)然后通过调试并查看$ scope来查看活动时,activity.BillableHours已切换到undefined

我使用类似的方法处理我已经使用过复选框的内容:

{ field: 'ApprovalAuthority', displayName: 'Approval Authority', cellTemplate: '<input class="control-label" style="margin-top: 8px;margin-left: 8px" type="checkbox" ng-model="row.entity.ApprovalAuthority" />' }

为什么这适用于复选框而不适用于文本框?

1 个答案:

答案 0 :(得分:1)

你忘了逃避ng-pattern中的'\'字符

只需将ng-pattern="/^\d{0,9}(\.\d{1,9})?$/"更改为ng-pattern="/^\\d{0,9}(\\.\\d{1,9})?$/"

即可

这是一个有效的plunker