Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/399.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在HandsonTable Angular指令中使用数组中的数据_Javascript_Angularjs_Handsontable - Fatal编程技术网

Javascript 在HandsonTable Angular指令中使用数组中的数据

Javascript 在HandsonTable Angular指令中使用数组中的数据,javascript,angularjs,handsontable,Javascript,Angularjs,Handsontable,我试图使用数组作为使用Angular指令创建的手持设备中某些列的数据源。但是,当对数据属性使用公共数组表示法(name[0])时,该特定表单元格中不会呈现任何内容。是我做错了什么,还是这不应该按我希望的方式工作 我的数据源: $scope.data = [ { 'name': ['Bob', 'Bobson'], 'email': 'bob@sample.com' }, { 'name': ['John', 'Johnson

我试图使用数组作为使用Angular指令创建的手持设备中某些列的数据源。但是,当对数据属性使用公共数组表示法(
name[0]
)时,该特定表单元格中不会呈现任何内容。是我做错了什么,还是这不应该按我希望的方式工作

我的数据源:

$scope.data = [
    {
        'name': ['Bob', 'Bobson'],
        'email': 'bob@sample.com'
    },
    {
        'name': ['John', 'Johnson'],
        'email': 'john@sample.com'
    }
];
和我的模板:

<div ng-app="Test">
    <div ng-controller="tableCtrl">
        <hot-table datarows="data">
            <hot-column data="name[0]"></hot-column>
            <hot-column data="name[1]"></hot-column>
            <hot-column data="email"></hot-column>
        </hot-table>
     </div>
</div>


请参见此处的简单示例:

从技术上讲,不可能在数据属性上使用数组表示法(名称[0]),但您有几个其他选项来完成某些操作:

解决方案1

将数据转换为对象

例如:


解决方案2

将阵列转换为控制器中具有函数的对象:

例如:

详情:

$scope.toObject=函数(arr){
var rv={};
对于(变量i=0;i

解决方案3

利用handsontable的自定义单元格渲染器功能:

例如:

详情:

视图:
控制器:
$scope.CustomRenderName=函数(实例、td、行、列、属性、值、单元格属性){
var html=Handsontable.helper.stringify(值[0]);
td.innerHTML=html;
返回td;
返回值[0];
}

我必须在小提琴上保存所选设置失败,我知道我已经运行了代码。使用您建议的表示法并不能真正解决我的问题,因为我从外部源获取数据,并且不想重新排列。如果您不想重新排列数据,可以将其转换为如下所述的对象:另一种解决方案是使用handsonable的单元渲染器功能。下面是我为您的案例创建的一个示例:我想我的问题的正确答案应该是“不,它不应该与热列标记的数据属性中的数组索引一起工作”。您是否看过解决方案Nr 3?
$scope.data = [
  {
    'name': {0:'Bob',1:'Bobson'},
    'email': 'bob@sample.com'
  },
  {
    'name': {0:'John',1: 'Johnson'},
    'email': 'john@sample.com'
  }
];
$scope.toObject = function(arr) {
  var rv = {};
  for (var i = 0; i < arr.length; ++i)
    rv[i] = arr[i];
  return rv;
}

for (var d in $scope.data) {
  $scope.data[d].name = $scope.toObject($scope.data[d].name);
}
View:
<hot-column data="name" renderer="customRendererName"></hot-column>

Controller:
$scope.customRendererName = function(instance, td, row, col, prop, value, cellProperties) {
  var html = Handsontable.helper.stringify(value[0]);
  td.innerHTML = html;
  return td;
  return value[0];
}