0

コードがコントローラーとディレクティブ リンク関数にあるかどうかで、オブジェクトの初期化が異なるという問題に遭遇しました。以下のコード例では、「this」パラメータが

prop: new Object(this)   

コードがコントローラーで実行される場合は正当な Object コンストラクターですが、ディレクティブで実行される場合は未定義です。同じコードの実行に違いがあるのはなぜですか?

myapp.directive("myDir",function()
{
  var myDir = {
    link: function(scope,element,attrs)
    {
      var obj;

      obj = new Object({
        prop: new Object(this)
      });
    }
  }

  return myDir;
}


myapp.controller("MyCtrl",function($scope)
{
  var obj;

  obj = new Object({
    prop: new Object(this)
  });
}
4

1 に答える 1

0

宣言での「これ」の使用が問題だと思います。「this」キーワードはどのように機能しますか?を読んでください。それがどのように機能するかを確実に理解するために。

私には、「this」はおそらくディレクティブの「myDir」変数とコントローラーのウィンドウオブジェクトに設定されるように見えます。

于 2013-06-14T18:28:35.603 に答える