Javascript AngularJS:使用现有控制器将数据传递给指令
我将尝试对我试图解决的问题进行概述: 在我网站的一个页面上,我加载了一个数据集。这些数据需要组织成一个网格。当路由到页面时,数据被解析,并且可以在全局页面控制器中访问 对于网格,我试图制定一个指令,负责正确放置数据项(根据一些规则,数据是通过的) 我想在主页中使用类似的内容:Javascript AngularJS:使用现有控制器将数据传递给指令,javascript,angularjs,Javascript,Angularjs,我将尝试对我试图解决的问题进行概述: 在我网站的一个页面上,我加载了一个数据集。这些数据需要组织成一个网格。当路由到页面时,数据被解析,并且可以在全局页面控制器中访问 对于网格,我试图制定一个指令,负责正确放置数据项(根据一些规则,数据是通过的) 我想在主页中使用类似的内容: <data-grid demoData="dataset"></data-grid> 但我似乎无法访问gridCtrl中的dat。 或者我应该使用链接函数还是编译函数?如果您想检索'demoDat
<data-grid demoData="dataset"></data-grid>
但我似乎无法访问gridCtrl中的dat。
或者我应该使用链接函数还是编译函数?如果您想检索'demoData'属性中的数据集,您肯定需要使用链接函数:
cardGrid.directive('cardGrid', function(){
return {
restrict: 'E',
templateUrl: 'views/partials/cardGrid.html',
replace:true,
scope: {
demoData: '='
},
link : function(scope, element, attrs) {
console.info(scope.demoData);
}
};
});
控制器选项是一种特殊类型的控制器:指令控制器。此控制器仅在该指令的上下文中定义(并且可以注入到其他指令中),但它可能不是您要寻找的
编辑:要回复您的评论,如果您希望缩短链接功能的大小,您确实可以使用控制器选项。
请参阅此示例:好,我现在将尝试将所有逻辑从控制器移动到链接函数。唯一糟糕的是链接函数会变得非常大,这会降低指令的可读性。会让你了解最新情况。
cardGrid.directive('cardGrid', function(){
return {
restrict: 'E',
templateUrl: 'views/partials/cardGrid.html',
replace:true,
controller: 'gridCtrl',
scope: {
demoData: '='
}
};
});
cardGrid.directive('cardGrid', function(){
return {
restrict: 'E',
templateUrl: 'views/partials/cardGrid.html',
replace:true,
scope: {
demoData: '='
},
link : function(scope, element, attrs) {
console.info(scope.demoData);
}
};
});