end()
ディレクティブからコントローラーのメソッドに引数を渡すにはどうすればよいですか?
指令
var fileuploader = function () {
return {
restrict: 'E',
scope: {
onEnd: '&',
},
controller: function ($scope) {
// When upload is done
$scope.onEnd(/* file */);
}
};
}
コントローラ
module.controller('Ctrl', function ($scope) {
$scope.end = function (file) {
console.log('file', file);
};
});
テンプレート:
<div ng-controller='Ctrl'>
<fileuploader on-end='end()'></fileuploader>
</div>
また、これが他の場所で使用されているのを見ないので、これが角度のある方法なのだろうかと思います。たぶん、以下はより角度がありますか?
指令
var fileuploader = function () {
return {
restrict: 'E',
scope: {
onEnd: '=',
},
controller: function ($scope) {
// When upload is done
$scope.file = file;
}
};
}
コントローラ
module.controller('Ctrl', function ($scope) {
$scope.$watch('file', function (val) {
console.log('file', val);
});
});
テンプレート
<div ng-controller='Ctrl'>
<fileuploader on-end='file'></fileuploader>
</div>
ただし、これにより間接性が追加され、コントローラーメソッドの呼び出しよりも前向きではない可能性があります。