Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript AngularJS指令-传入选项对象与单独属性的优缺点?_Javascript_Angularjs - Fatal编程技术网

Javascript AngularJS指令-传入选项对象与单独属性的优缺点?

Javascript AngularJS指令-传入选项对象与单独属性的优缺点?,javascript,angularjs,Javascript,Angularjs,假设我正在为散点图创建一个指令,该散点图应该有一整套可配置的属性。 据我所知,我可以设置以下各个范围属性: directive('scatterChart', ['$http', function($http){ scope: { data: "=?", selected : "=?", indicatorX : "=?", indicatorY : "=?", indicatorSize : "=?" } 或使用以下选项传递对象: directive('sc

假设我正在为散点图创建一个指令,该散点图应该有一整套可配置的属性。 据我所知,我可以设置以下各个范围属性:

directive('scatterChart', ['$http', function($http){
 scope: {
   data: "=?",
   selected : "=?",
   indicatorX : "=?",
   indicatorY : "=?",
   indicatorSize : "=?"
 }
或使用以下选项传递对象:

directive('scatterChart', ['$http', function($http){
 scope: {
   model: "=?",
 }
在后一种情况下,我不必回去调整我的标记,这就足够了:

<div class="scatter-chart" model="scatter.options">

那么,我应该采用哪种方法?为什么?

如果要覆盖一个或两个参数,多属性可能是一个很好的解决方案。就我个人而言,我喜欢对象“模式”,因为它包含所有内容,并且我可以从控制器更新模型,而无需接触HTML

取决于您希望如何更新模型变量。您正在使用controller/scope方法还是通过.attr()或其他dom操作框架进行更新?这取决于你的需要,但我认为使用一个对象最适合你

scope.$watch('model', function(newVal, oldVal) {
    render();
}, true);