以下のようなディレクティブがあります-
<div data-my-param-control data-save-me="saveMe()"></div>
ディレクティブコントローラーでは、コントローラーから saveMe() 関数を分離スコープでバインドし、以下のようにします-
function MyParamControlDirective($filter,
$state,
$stateParams,
$uibModal,
) {
return {
restrict: 'AE',
scope: {
saveMe: '&',
},
templateUrl: 'html/myhtml',
controller: ['$scope', function ($scope) {
$scope.saveMeHandler = function () {
var saveMe = $scope.saveMe();
$uibModal.open({
animation: false,
windowTopClass: '',
templateUrl: 'html/askmyname',
size: 'sm',
resolve: {
saveMe: function () {
return saveMe;
}
},
controller: function (
$scope,
$uibModalInstance,
saveMe,
toastr
)
{
$scope.close = function () {
$uibModalInstance.close();
};
$scope.saveMyName = function() {
$scope.submited = true;
if ($scope.my_name != "undefined" && $scope.my_name != "") {
saveMe();
$scope.close();
} else {
toastr.error('Please enter search name');
}
}
}
});
};
}]
};
}
今まですべてがうまくいっています。
ディレクティブに uibModal を追加し、ポップアップを開いて名前を取得します。名前は $scope.my_name 変数にあります。ここで、この名前を関数 saveMe() に渡したいと思います。saveMe($scope.my_name); のような変数を直接渡すと、コントローラー関数で未定義と表示されます。以下はコントローラー機能です-
$scope.saveMe = function () {
//logic here to save data
};
my_name をモーダルから saveMe メソッドに渡す方法を教えてください。前もって感謝します