在我的代码中,我将一个JSON对象数组从我的服务传递给我的控制器,然后传递给我的指令,然后进行可视化。
控制器中的代码:
(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 code:
<div class="container" ng-controller="DownloadCtrl">
<donut-chart data='download.routes'></donut-chart>
</div>
指令代码:
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: '='
}
};
});
如果我范围。$ watch $ scope.data我注意到它出现一次且没有分配数据,然后再次出现并分配了数据。如果我没有 dataSet!== undefiend ,那么代码就会失败。
它适用于当前的设置,但我觉得有一种更好的方法,而不仅仅是检查 dataSet!== undefined 。我想我可能会以不正确的顺序或以错误的方式做事。
我想要一种方法可以删除 dataSet!== undefiend
答案 0 :(得分:2)
如果return
为scope.data
null
{/ 1}}
function link(scope,element,attr){
if(scope.data == null){
return;
}
var dataSet = scope.data;
var chart = c3.generate({
data: dataSet,
type:'donut'
});
};
答案 1 :(得分:0)
不要在你的链接功能中使用return,因为阻止了添加更多业务逻辑的能力,在我看来是不可扩展的......
只需检查 public $validate = array(
'password' => array(
'required' => array(
'rule' => array('notEmpty'),
'message' => 'A password is required'
),
'min_length' => array(
'rule' => array('minLength', '6'),
'message' => 'Password must have a mimimum of 6 characters'
)
),
'password_confirm' => array(
'required' => array(
'rule' => array('notEmpty'),
'message' => 'Please confirm your password'
),
'equaltofield' => array(
'rule' => array('equaltofield','password'),
'message' => 'Both passwords must match.'
)
),
)
是否不是 falsy 值,然后执行您需要的操作。
错误值包括:scope.data
,false
,0
,null
,undefined
如果您对其中一个假值执行检查,则''
语句不满足。
if