2016-07-12 22 views
0

皆さん、私はディレクティブを呼び出しており、ディレクティブにハードコードを渡していますが、渡していません。私は自分のコードで何が問題なのか分からなかった。 コード:ディレクティブの属性値が渡されていません

<div ng-controller="EmployeeController"> 
    <off-balance user-key="18" collapse-hide="true"></off-balance> 
</div> 

ディレクティブコード:

App.directive('offBalance', ['OffService', 'toaster', OffBalance]); 

function OffBalance(OffService, toaster,) { 
    var directive = { 
      link: link, 
      restrict: 'E', 
      templateUrl: 'app/modules/sometemplate.html', 
      scope: { 
       userKey: '=', 
       collapsehide: '=?', 
      }, 
      scope: true 

     } 
    } 

    return directive; 

    function link(scope, element, attr) { 

     scope.$watch('userKey', function (newVal) { 
      alert("userKey" + newVal); 

     }); 

     scope.$watch('collapsehide', function (newVal) { 
      alert("collapsehide" + newVal); 
     }); 
    } 
} 

USERKEYとcollapsehideの両方が定義されていません

私はこのようなディレクティブ何かを呼び出しています。

答えて

1

scope: trueを削除し、あなたのウォッチャー

collapseHide: '=?'同上により collapsehide: '=?'を置き換える固定この問題に私を助けてください
3
以下

見つけてください作業plunker:

https://plnkr.co/edit/y75jQhDCWlEBb2pDNKEs?p=preview以下

var App = angular.module('app', []); 

App.directive('offBalance', [OffBalance]); 

function OffBalance() { 
    var directive = { 
    link: link, 
    restrict: 'E', 
    scope: { 
     userKey: '=', 
     collapseHide: '=?' 
    } 
} 
return directive; 
} 


function link(scope, element, attr) { 
    scope.$watch('userKey', function(newVal) { 
    alert("userKey" + newVal); 
}); 
console.log(scope); 
scope.$watch('collapseHide', function(collapseHide) { 
    alert("collapsehide" + collapseHide); 
}); 
} 

がすべきポイントであります注目:

  1. scopeはあなたの指示の2倍です。
  2. collapsehideはcollapseする必要があります。アトリビュートとディレクティブの命名に厳密に厳しく注意してください。 function OffBalance()
+0

我々は両方のスコープを使用することができますどのような方法があるの内側に

  • return directiveをする必要があります? –

  • +0

    いいえ、できません。両方のスコープには独自の意味があります。 'scope:true'ディレクティブが新しい​​スコープを取得し、' scope:{} 'と書くと、ディレクティブは新しい独立スコープを取得します。 – varit05

    関連する問題