Javascript angular chart.js的数据属性中的表达式

Javascript angular chart.js的数据属性中的表达式,javascript,angularjs,angularjs-scope,angularjs-ng-repeat,chart.js,Javascript,Angularjs,Angularjs Scope,Angularjs Ng Repeat,Chart.js,嗨,我试过在数据属性中使用这样的表达式 <div ng-repeat="item in items"> <canvas data="getTheData(item.value)"></canvas> </div> 我的计划是根据用户加载的项目从工厂只获取所需的数据 问题是,这导致[$rootScope:infdig]的日志永远不会停止,即使“项”列表中只有一项 我做错了吗?你可以做这样的事情,我不确定这是否有

嗨,我试过在数据属性中使用这样的表达式

      <div ng-repeat="item in items">
        <canvas data="getTheData(item.value)"></canvas>
     </div>
我的计划是根据用户加载的项目从工厂只获取所需的数据

问题是,这导致[$rootScope:infdig]的日志永远不会停止,即使“项”列表中只有一项


我做错了吗?

你可以做这样的事情,我不确定这是否有效

在呈现
DOM
时调用
getTheData
,您应该在该方法中传递
item
,而不是
item.value

<div ng-repeat="item in items" ng-init="getTheData(item)">
    <canvas data="item.data"></canvas>
</div>

因此,在
getData
函数成功运行的过程中,您需要设置
项.data
值,该值将被传递到canvas
data
属性。

您正在将
未定义的
传递到
data
属性。不,我只在日志中获取我想要的数据,而不是我想要的数据。事实上,我在getTheData(item)中传递了完整的项目@Stellan请尝试一下我的回答谢谢我会尝试这个,但是只有一个问题,如果数据只加载到init上,图表是否能够更新更改?@Stellan是..当您向指令提供
item.data
的引用时,随着数据的到来,它将更新图表。太棒了!非常感谢。节省了很多时间,还没有尝试过任何$watch功能,但我想它会工作的!:)@Stellan不支持watcher..使用这种方法..那会更干净..我能知道你为什么要支持watcher吗?我使用firebase作为图表的后端,我希望它们在有新数据时更新
<div ng-repeat="item in items" ng-init="getTheData(item)">
    <canvas data="item.data"></canvas>
</div>
$scope.getTheData = function(item){
  getData[item.value]().then(function(data){
      item.data = data;
      console.log(data);
    });
};