首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >仅在未定义的AngularJS时传递

仅在未定义的AngularJS时传递
EN

Stack Overflow用户
提问于 2015-12-14 12:20:16
回答 2查看 49关注 0票数 0

在我的代码中,我将JSON对象数组从我的服务传递给我的控制器,然后传递给我的指令,以便可视化。

主计长代码:

代码语言:javascript
复制
(function(){

'use strict';

angular.module('dashboardApp').controller('DownloadCtrl', DownloadCtrl);

DownloadCtrl.$inject= ['DownloadService','$scope'];

function DownloadCtrl(DownloadService, $scope){
    var self=this;      

    DownloadService.getRoutes()
      .then(function(responseData){       
        self.routes = responseData.data;   

  });

}

})();

HTML代码:

代码语言:javascript
复制
<div class="container" ng-controller="DownloadCtrl">    

    <donut-chart data='download.routes'></donut-chart>

</div>

指令代码:

代码语言:javascript
复制
angular.module('dashboardApp').directive('donutChart',function(){

    function link(scope,element,attr){
        var dataSet = scope.data;

        if(dataSet!==undefined){
            var chart = c3.generate({
                data: dataSet,
                type:'donut'
            });
        }
    };

    return {
        restrict: 'EA',
        link : link,
        scope: {
            data: '='       

        }
    };
});

如果我范围.$ $scope.data,我注意到它只出现一次,并且没有分配数据,然后它再次出现,并分配给它的数据。如果我没有dataSet!==undefiend,那么代码就会失败。

它适用于当前的设置,但我认为有一种比简单地检查dataSet!==undefined.是否更好的方法我想我可能会以不正确的顺序或不正确的方式做事情。

我想要一种允许我删除dataSet!==undefiend的方法

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-12-14 12:31:56

如果returnnull,则应该从链接函数中提取null

代码语言:javascript
复制
function link(scope,element,attr){
    if(scope.data == null){
     return;
    }

    var dataSet = scope.data;

    var chart = c3.generate({
        data: dataSet,
        type:'donut'
    });

};
票数 2
EN

Stack Overflow用户

发布于 2015-12-14 12:40:13

不要在链接函数中使用返回,因为它阻止了添加更多业务逻辑的能力,在我看来是无法扩展的.

只需检查scope.data是否是一个虚假的值,然后做您所需要的。Falsy值为:false0nullundefined''

如果您对这些虚假值之一执行检查,则if语句将无法满足。

代码语言:javascript
复制
{
  link: function postLink(scope, element, attrs) {
    if(scope.data) {
      d3.generate({
        data: scope.data
      });
    }
  }
}

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34266921

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档