カスタムディレクティブで一方向バインディングを使ってデータ操作をしようとしていますが、初めて "未定義"が返されます。私はディレクティブで何をし、$ watchを使わないのですか?一方向バインディングを使用してディレクティブのデータを正しくフォーマットする方法はありますか?
例:
<one val={{arr[1].value}}> </one>
<two val="arr[0].value"> </two>
ディレクティブ:
.directive('one', function(){
return {
restrict: 'E',
scope: {
val:'@'
},
template: '<div> 1111 {{val}} </div>' ,
link: function (scope) {
console.log('scope', scope.val) // SHOWS UNDEFINED BUT INSERT DATA IN TEMPLATE
if(scope.val) scope.val = \t scope.val.replace(/\d/g,'')
}
}
})
.directive('two', function(){
return {
restrict: 'E',
scope: {
val:'='
},
template: '<div> 2222 {{val}} </div>' ,
link: function (scope) {
console.log('scope', scope.val)
scope.val = \t scope.val.replace(/\d/g,'')
}
}
});
例:JsFiddle
を探す
ツーリンク関数のコードを変更する結合片道からの値にアクセスするために
attr.$observe
を使用する必要があります。あなたが望む出力は何ですか? – Cruzerあなたは2人で行ったのと同じ方法に従っていませんか? –
@SaEChowdaryそれが疑わしい理由です。 –