Я создал поле для удаления песни из локального или iTunes, используя angularjs и laravel. Это HTML-код. Я добавил его вид здесь.] 1
<tab heading="Upload New File" select="tabSelected('uploadnew')">
<div class="input-group">
<label> Asset Name </label>
<span class="color-red ng-scope">*</span>
<input type="text" ng-model="uploadnew.assetName" class="form-control" />
</div>
<div class="form-group">
<label> Notes </label>
<textarea class="form-control" msd-elastic ng-model="uploadnew.notes"></textarea>
</div>
<div class="form-group fileUp">
<div class="inlinehr"><input type="file" class="ng-pristine ng-valid ng-touched" ngf-select="uploadnew.selectFile($files)" ngf-multiple="false"></div>
<span class="badge" ng-show="!uploadnew.newFile">No File Selected</span>
<span>{{uploadnew.newFile.name}}</span>
</div>
<div>
<div ngf-drop ngf-select ng-model="uploadnew.droppedFiles" class="drop-box"
ngf-drag-over-class="'dragover'" ngf-multiple="true" ngf-allow-dir="true">Drop file here</div>
<div ngf-no-file-drop>File Drag/Drop is not supported for this browser</div>
</div>
</tab>
В Google Chrome работает удаление iTunes. Но это не работает в браузере Safari. В консоли нет ошибок. Кто-нибудь знает, что мне делать? Спасибо.
Здесь я добавил соответствующий код JavaScript.
MetronicApp.controller('SelectSingleAssetController', function ($scope, $modalInstance, Upload, $http, EntityAssets, $timeout, $q, selectSingleConfig) {
var searchForAsset = function (term, orderBy, reverse, mimeTypeFilter) {
var deferred = $q.defer();
var result = [];
EntityAssets.query({
page: 1,
pageSize: 10,
orderBy: orderBy,
orderDir: reverse ? 'DESC' : 'ASC',
mimeTypeFilter: mimeTypeFilter,
term: term
}, function (data) {
deferred.resolve(data);
});
return deferred.promise;
};
$scope.exsiting = {
selectedAsset: null,
searchAssets: []
};
$scope.exsiting.refreshSearch = function (term) {
if (term.length > 1) {
searchForAsset(term, 'created_at', false, selectSingleConfig.mimeTypeFilter)
.then(function (data) {
$scope.exsiting.searchAssets = data;
});
}
else {
$scope.searchAssets = [];
}
};
// uploadnew tab
$scope.uploadnew = {
assetName: '',
notes: '',
newFile: null,
droppedFiles: [],
FileLoadedPercentage: ''
}
$scope.$watch('uploadnew.droppedFiles', function () {
$scope.uploadnew.selectFile($scope.uploadnew.droppedFiles);
});
$scope.uploadnew.selectFile = function (files) {
if (files.length > 0) {
$scope.uploadnew.newFile = files[0];
var lastSplit = files[0].name.split('.');
var lastSplitLng = lastSplit[0].length;
if (lastSplit.length > 1) {
var lastSplitLng = files[0].name.length - (lastSplit[lastSplit.length - 1].length + 1);
}
if (!$scope.uploadnew.assetName) {
$scope.uploadnew.assetName = files[0].name.substring(0, lastSplitLng);
}
}
else {
$scope.uploadnew.newFile = null;
}
};
// global stuff
$scope.tabSelected = function (tabName) { $scope.currentTab = tabName; }
$scope.currentTab = 'exsiting';
$scope.$watch('currentTab', function () { updateIsValid(); });
$scope.$watch('uploadnew.assetName', function () { updateIsValid(); });
$scope.$watch('uploadnew.newFile', function () { updateIsValid(); });
$scope.$watch('exsiting.selectedAsset', function () { updateIsValid(); });
var updateIsValid = function () {
if ($scope.currentTab == 'exsiting') {
$scope.isValid = !!$scope.exsiting.selectedAsset;
}
else if ($scope.currentTab == 'uploadnew') {
$scope.isValid = !!$scope.uploadnew.assetName && !!$scope.uploadnew.newFile;
}
else {
$scope.isValid = false;
}
};
$scope.isValid = false;
$scope.isSending = false;
$scope.FileLoadedPercentage = 0;
$scope.save = function () {
$scope.isSending = true;
var result = { selectType: $scope.currentTab };
// making an internal promise to make this easier to read and process
var deferred = $q.defer();
// once this is resolved it will fire off the 'preCloseCallback'
deferred.promise.then(function () {
if (selectSingleConfig.preCloseCallback) {
selectSingleConfig.preCloseCallback($scope, result.entity_asset, function () { $modalInstance.close(result); });
}
else {
$modalInstance.close(result);
}
});
if ($scope.currentTab === 'exsiting') {
result.entity_asset = $scope.exsiting.selectedAsset;
deferred.resolve();
}
else if ($scope.currentTab === 'uploadnew') {
var data = {
AssetName: $scope.uploadnew.assetName,
Notes: $scope.uploadnew.notes ? $scope.uploadnew.notes : '',
OriginalFilename: $scope.uploadnew.newFile.name,
File: $scope.uploadnew.newFile
};
if (selectSingleConfig.autoUpload === true) {
Upload.upload({
data: data,
url: "/entityAssets"
}).then(function (uploadResult) {
$scope.currentTab === 'exsitingnew'
result.entity_asset = uploadResult.data;
deferred.resolve();
}, function () {
}, function (evt) {
$scope.FileLoadedPercentage = parseInt(100.0 * evt.loaded / evt.total);
});
}
else {
result.entity_asset = data;
deferred.resolve();
}
}
};
$scope.cancel = function () { $modalInstance.dismiss(); };
});