とスコープ私はインライン版を許可するように<input type=text>
と<div>
を切り替えるディレクティブmyEditable
ありますAngularJsディレクティブ、値および機能
<my-editable value="vm.contact.name"></my-editable>
を私は$scope.$apply
がすべきことを言ういくつかの記事を読むまで、私はそれで幸せでした使用しないでください。
function save() {
scope.$apply(function(){
scope.value = editor.find('input').val();
});
toggle();
}
をしかし、それは悪いことなので、私は私の指示にコールバックメソッドを渡したい:ユーザーが(私の場合vm.contact.name
)モデルを更新するために彼の変更を保存すると、私はそれを使用しています。このコールバックは、ユーザーが変更を保存するときに新しい値で呼び出される必要があります。しかし、私がディレクティブのスコープに二つのフィールドを追加することができないようだ。
return {
restrict: 'EA',
scope: {
value: '=value'/*,
onSave: '&onSave'*/
},
link: function(scope, element, attr) {
// ...
element.find('.save').click(function(){
save();
});
// Declaration of `save` as above.
}
}
私はonSave
のコメントを解除した場合、値が受信されることはありませんし、onSave
は未定義です。
私の質問は、値とコールバックメソッドをディレクティブに与える方法です。 そして、ボーナスとして、どのようにコールバックにパラメータを渡すことができますか?
おかげ
下の関数を渡すことができます保存()関数が呼び出された場合は? – Merlin
@Lorenzoを 'link'に追加しました。ボタンまたは_Enter_キーでJQueryのクリックハンドラを使用して「保存」を呼び出す –