ディレクティブと分離スコープで非常に奇妙な現象が発生します。スコープ内の属性は、属性の名前に応じて機能するか動作しません。私が使用している場合ディレクティブスコープの属性が属性名に応じて壊れます
{check:'@check'}
それはうまく動作し、期待どおりに動作します。しかし、私が使用する場合:
{checkN:'@checkN'}
定義された関数は決して割り当てられません。
HTML::
<item ng-repeat="list_item in model.list" model="list_item" checkN="checkName()" check="checkName()" position="$index"></item>'
Javascriptを
app.directive('item', function(){
return {
restrict: 'E',
replace : false,
scope:{
$index: '=position',
check: '&check',
checkN: '&checkN',
model:'='
},
template: '',
link: function(scope, element, attrs){
console.log(scope.check())
console.log(scope.checkN())
}
}
});
コンソールその後、私に次のようになります:
The checkName function has been called [which is the return string of the function]
undefined
それは本当にあるの例は次のようになります可能性それは大文字の使用法に依存していますか?これは非常に「予期しない」動作になります。あなたの助け
schackiため
おかげで
"指令には、' ngBind'のようなラクダの名前が付いています。この指令は、ラクダの大文字小文字の名前を ':'、 '-'または' _'という特殊文字でスネークケースに変換することによって呼び出すことができます。 HTMLバリデータに準拠させるには、 'x-'や 'data-'の接頭辞を付けます。 - [Directive page](http://docs.angularjs.org/guide/directive)セクション「HTMLからの指示の呼び出し」 –