2016-09-24 64 views
0

我在$ scope上有相同的options對象,我想多次使用它。如何區分具有相同名稱的對象?這恰好是角度。

$scope.options = { 
      chart: { 
       type: 'Chart1', 
       height: 450, 
       width:600 
      } 
     }; 
$scope.options = { 
      chart: { 
       type: 'Chart2', 
       height: 400, 
       width:100 
      } 
     }; 

HTML

<myOptions=**"options"**></myOptions> 

我想也許我可以將它們分配給對於初學者一個變量?

回答

2

沒有理由對選項使用相同的$ scope.name。我建議你使用$ scope.optionsOne和$ scope.optionsTwo。否則,第二$ scope.options覆蓋第一$ scope.options,你就只剩下:

$ scope.options = { 圖表:{ 類型: 'Chart2', 高度:400, width:100 } };

祝你好運!

+0

是的,這正是問題,我不清楚。 – cdb

+0

好,所以把綠色V旁邊的答案,以便其他用戶查看這篇文章將閱讀正確的答案:) –

0

雖然我不知道的情況下(一個對象應覆蓋其他),如果您要保存在變量中的對象,那麼你可以使用嚴格比較運算符:

var opt1 = $scope.options; 

//after a possible change in value 
if(opt1 === $scope.options) doStuff(opt1); //note strict comparison 
else doStuff($scope.options) 

否則,如果你知道你正在尋找的[type]鍵可以檢查:

if($scope.options[type] == 'chart1') doStuff($scope.options); 
+0

這看起來好像會起作用,我知道關鍵。我的格式是否正確?我不知道該怎麼把你的「doStuff」放在哪裏,因爲我所要做的就是傳遞選項if($ scope.options [type] =='sunburstChart') $ scope.options = { chart: { 高度:450, 寬度:600, 顏色:d3.scale.category20c(),持續時間 :250 } }; – cdb

2

據我所知,第二個「選項」對象將覆蓋第一個。使用構造函數而不是對象文字會更好。聲明函數並使用參數初始化值。例如:

$scope.options = { 
      myChart: function(param1,param2,param3) { 
       type = param1; 
       height = param2; 
       width = param3; 
      } 
     }; 

$scope.options.myChart(val1,val2,val3); 

可能有更好的解決方案。請有人糾正我,如果我錯了。

+0

這是我認爲會工作的格式 - 也許它仍然會。我想知道我的造型是否正確?我是否顯示它是最後一行中的字符串或數字? $ scope.options = { 圖表:{功能(參數1,參數2,參數3,param4,param5){ 類型的param1 =, 高度= param2的, 寬度=參數3, 顏色= param4, 持續時間= param5 } }; – cdb

相關問題