2016-09-24 11 views
0

私は$ scopeに同じオプションオブジェクトを持っています。これを複数回使用したいと思います。同じ名前のオブジェクトを区別するにはどうすればよいですか?これは角張っていることがあります。

$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を使用することをお勧めします。それ以外の場合は、2番目の$ scope.optionsは、最初の$ scope.optionsをオーバーライドして、あなただけが残っている:

$ scope.options = { チャート:{ タイプ: 'Chart2'、 高さ:400、 幅: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) 

そうでない場合、

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

これはうまくいくようですが、私はそのキーを知っています。これを正しくフォーマットしましたか?私はあなたが "doStuff"を持っている場所をどこに置くべきか分からなかった。なぜなら、($ scope.options [type] == 'sunburstChart') $ scope.options = { chart: { 高さ:450、 幅:600、 色:d3.scale.category20c()、 継続時間:250 } }; – cdb

2

私の知る限り、2番目の「オプション」オブジェクトは最初のオブジェクトを上書きします。オブジェクトリテラルではなく、コンストラクター関数を使用する方がよいでしょう。パラメータを使用して関数を宣言し、値を初期化します。たとえば:

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

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

もっと良い解決策があります。私が間違っているなら、誰かが私を正してください。

+0

これは私が考えていた形式です。私の体調は正しいのだろうか?最後の行に文字列または数字であることを示しますか? $ scope.options = { チャート:{関数(PARAM1、PARAM2、param3、param4、param5){ タイプ= PARAM1、 高さ= PARAM2、 幅= param3、 色= param4、 期間= param5 } }; – cdb

関連する問題