2014-10-07 71 views
3

我使用Restangular来解析响应(产品列表)...我知道这个问题已经解决了。Kendo-UI Grid不通过AngularJS呈现数据

我是Kendo-UI的新手。但是已经建立了如下的基本测试网格。我正在使用k-rebind,因为产品阵列在创建网格时可能未解决。

<kendo-grid k-options="mainGridOptions" k-rebind="products"></kendo-grid> 

在我的控制器:

$scope.products = []; 
     $scope.therapyAreas = []; 
     $scope.dropDownTAs = []; 

     prProductService.getProducts().then(function(products) { 
      $scope.products = products; 
      prTAService.getTAs().then(function(tas) { 
       $scope.therapyAreas = tas; 
       for(var i = 0; i < $scope.therapyAreas.length;i++) { 
        $scope.dropDownTAs.push({id: $scope.therapyAreas[i].id, therapyArea: $scope.therapyAreas[i].therapyArea}); 

       }    
      }); 
     }); 

     $scope.mainGridOptions = { 
       dataSource: { 
        data: $scope.products      
       }, 
       height: 550, 
       scrollable: true, 
       sortable: true, 
       filterable: true, 
       pageable: { 
        input: true, 
        numeric: false 
       }, 
       columns: [ 
        "productName", 
        "activeIngredients", 
        "productComments", 
        "gpt", 
        "ta" 
       ] 
     }; 
    }]) 

我知道正在返回数组的产品,我还以为K-重新绑定会看产品阵列更改,所以当它解决它刷新UI ...没有这样的运气。

我已经尝试在数据源中手动排列数组以反映产品数组的响应,并且网格工作正常。

问候

回答

4

你是绝对正确的,剑道UI电网将开始无法访问数据,因此当电网获取页面上呈现它会简单地绑定到一个空数组 - 给你没有数据。在这种情况下使用k-rebind属性也是正确的,因为它应该关注范围更改的时间。

但是,你错过了一个重要的事情是,k-rebind应设置为相同为您的选项,如this documentation article提及。这很容易被忽略,但我以前在类似的情况下使用过。

所以,虽然我没有测试过这一点,我认为以下应为你工作:

<kendo-grid k-options="mainGridOptions" k-rebind="mainGridOptions"></kendo-grid> 
+0

您好,感谢......是不是从那个链接很明显,你必须:

<kendo-grid data-source="vm.kendoData.data" sortable="true" options="vm.gridOptions"> </kendo-grid> 
在相位控制器

在HTML视图代码

绑定到选项。它只是说,你需要绑定到范围内的东西,你需要看......我做了什么。会给这个去,欣赏的回应.... – smackenzie 2014-10-08 18:27:20

+0

不用担心!如果这仍然行不通,请告诉我更长的时间/完整:) – carlbergenhem 2014-10-08 18:54:54

+0

在angularJs世界中,虽然可以绑定到一个空数组,但它应该被自动监视和刷新,这个级别的数据绑定不会发生在Kendo UI中呢? – smackenzie 2014-10-09 13:51:27

1

我得到了同样的错误。但这个工作对我来说:

vm.kendoData = new kendo.data.DataSource({}); 

vm.getRegistros = function() { 
    vm.loading = true; 
    registroDePontoService.registrosPorPeriodo(vm.registroPorPeriodo) 
     .success(function (result) { 
      vm.kendoData.data = result.registros; 
     }).finally(function() { 
      vm.loading = false; 
     }); 
}; 

vm.gridOptions = { 
    columns: [{ 
     field: "date", 
     title: "Date", 
     width: "120px" 
    }, { 
     field: "column1", 
     title: "column1", 
     width: "120px" 
    }, { 
     field: "column2", 
     title: "column2", 
     width: "120px" 
    }]