作者ace119 (信)
看板Ajax
标题[问题] ng-grid
时间Tue Aug 26 22:10:03 2014
小弟刚入职场新鲜人
许多观念尚模糊
在提问过程中若有错误的
还请多多指教
在提问前我先说明一下
撰写出来的网页需要支援 IE 8
前端使用 AngularJS
目前在使用 ng-grid 上遇到点问题
原本此功能用 SpreadJS 会容易许多
但是 SpreadJS 的 Combobox 并不支援 IE 8
/*---------------------------*/
我实作需求的功能是这样的:
今天我从後端接收到一笔 Excel 栏位资讯的 List
假设
ParentAry[] 含有
ValueAry[](存放 Excel 的 col位置, row位置, value) 及
ErrorAry[](存放 Error 的 col位置, row位置, value)
我要根据有几笔 ValueAry[] 动态长出栏位
然後显示其 Value
再依据 ErrorAry[] 内的资讯
标记错误的栏位显示为红色
并提供 User 直接点选修改、存值
而问题出现在
若我显示错误栏位为红色,就无法修改值
若我提供修改功能,就无法显示错误栏位红色
/*------------------------------------*/
以下是我 code 的大致相关内容
提供显示错误栏位为红色
我先将 ErrorAry[] 的内容加入对应的 ValueAry[] 方便处理
再处理栏位部分
columnDefs:
{
field: "ArrayList[]", //ng-grid栏位的field为[object Object]
cellTemplate: '<... ng-class="{red: row.getProperty(col.field).error}">
<...>{{row.getProperty(col.field).value}}</..></..>'
}
此种方式的 field 含有 value 及 error ...等多种资讯
但是点选栏位改值後,ex: 100
field 栏位的 ArrayList[] 会直接被存为"100"且不会显示出来
因为原预设是 [object Object]
无法存到下层 ValueAry[] 的 Value
---
但是若要变成能处理存值的问题
columnDefs:
{
field: "ArrayList[].value", //ng-grid栏位的field为string
cellTemplate: '<..="{red:..(col.field).error}">//取不到error值,忽略
<...>{{row.getProperty(col.field)}}</..></..>'
}
这样就能修改值,但就取不到 error 的资讯了
/*-----------------------------------*/
以上冗长的描述不知道能不能清楚表达我的问题
还请高手神手帮帮我解决冲突
感谢
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 123.195.33.63
※ 文章网址: http://webptt.com/cn.aspx?n=bbs/Ajax/M.1409062205.A.8CC.html
※ 编辑: ace119 (123.195.33.63), 08/26/2014 22:12:40
1F:推 up9cloud: 依照你的思路,觉得你可以在收到data的时候就把value跟 08/27 05:20
2F:→ up9cloud: error两个list merge起来成为一个你要的array再来处理 08/27 05:21
3F:→ up9cloud: 或是red class用一个value底下的undefined值控制,然後 08/27 05:25
4F:→ up9cloud: ctrl里面让error去把那个值改成true 08/27 05:26
感谢你的回覆
我前面的"ErrorAry[] 的内容加入对应的 ValueAry[] 方便处理" 这段就是
将两个list merge起来成为一个 array
今天又尝试过很多方式,主要是以field: "ArrayList[].value"这条路走
不过走到最後发现差不多是死路了
看来得朝field: "ArrayList[]" => merge两个list去拿值的路走
这条路主要就是卡在 User 修改值後会将 Array 直接覆盖成 string
还请帮我想想 solution
感谢!
※ 编辑: ace119 (123.195.33.63), 08/27/2014 23:52:54
!! 太感谢你了
虽然我後来有解决这问题
但是你的方法比较漂亮
让我学了不少
我下周上班再去尝试看看
感谢!
※ 编辑: ace119 (123.195.33.63), 08/30/2014 20:38:25