Çok 1 şey söyleyebilirim
İşte
(function(){
angular.module('app.uploadedReleases')
.controller('UploadedReleasesController', UploadedReleasesController)
.controller('ModalController', ModalController);
UploadedReleasesController.$inject = ['$log', '$scope', '$modal', 'ReleaseService', 'TrackService'];
function UploadedReleasesController ($log, $scope, $modal, releaseService, trackService){
vm.selectTrack = selectTrack;
function selectTrack(album, track, index){
trackService.currentTrack(album.slug, track.fileName).then(function(responseValue){
vm.temp = responseValue;
});
vm.formTrack = vm.selected.track;
}
}
benim hizmet trackService denir: İşte benim kodudur Yani, bir hizmet oluşturuyorsunuz, daha sonra nesne oluşturmak yerine this
bağlamına bağlamanız gerekir.
var trackService = {};
var trackService = this;
geçmek Ama servisten özel nesne dönen de yanlış değildir ederim. Yani şimdiki durumda onu iade ettin. Servis kodunun sonuna eklenecek
return trackService
hizmet & fabrika iş, ben Sen vardı trackService.currentTrack
yönteminden söz dönmelidir this answer
üzerine readup tavsiye ederim nasıl Hala karıştı özel olarak oluşturulmuştur.
trackService.currentTrack = currentTrack;
function currentTrack(releaseSlug, trackSlug){
var trackUrl = releasesUrl + '/'+ releaseSlug + '/' + trackSlug + '/track';
var deferred = $q.defer();
$http.get(trackUrl).then(function(trackResponse){
return deferred.resolve(trackResponse);
}, function(error){
return deferred.reject({msg: 'Error while getting the current track details'})
});
return deferred.promise; //returned promise
}
Aksine sizden söz
$http.get
yöntemle döndü nerede uygulamak gibi anti-desen düşünün olan özel sözünü yapmak olmalıdır Bunu kullanmak gerekir.
Refactored Versiyon
trackService.currentTrack = currentTrack;
function currentTrack(releaseSlug, trackSlug){
var trackUrl = releasesUrl + '/'+ releaseSlug + '/' + trackSlug + '/track';
return $http.get(trackUrl).then(function(trackResponse){
return trackResponse;
}, function(error){
return {msg: 'Error while getting the current track details'};
});
}
Teşekkürler @Pankaj Parkar. 'Return deferred.promise' özelliğini ekledim ve hala aynı sorunla karşılaştım. – noobcoder
@noobcoder 'vm.selectTrack = selectTrack' nedir anlamak gerçekten zor? ve sonra vm.formTrack = vm.selected.track; 'nereden geliyor? –
Bunlar gibi tanımladığım nesneler şunlardır: 'vm.formTrack = selectTrack' işlevinden bir geri dönüş değeri olarak selectTrack – noobcoder