我正在尝试围绕cordova media plugin创建一个包装器/工厂,这需要您创建一个新的Media对象,然后再次使用它来暂停,停止,播放等。
工厂+ link to actual code:
.factory('$cordovaMedia', ['$q', function ($q) {
return {
newMedia: function (src) {
var q = $q.defer();
var mediaStatus = null;
var media = new Media(src,
function (success) {
q.resolve(success);
}, function (error) {
q.reject(error);
}, function (status) {
mediaStatus = status;
});
return {
media: media,
mediaStatus: mediaStatus,
promise: q.promise
}
},
play: function (source) {
return source.play();
},
stop: function (source) {
return source.play();
}
}]);
工厂如何使用此实现的示例用法:
var media = $cordovaMedia.newMedia('some/src.mp3').media
$cordovaMedia.play(media);
$cordovaMedia.stop(media);
正如您所看到的,我正在创建一个新的Media
对象,并将其分配给变量并在工厂中再次使用它。
我想知道是否有更好的方法可以做到这一点?主要是AngularJS在工厂中创建对象的最佳方法是什么,必须通过同一工厂再次使用?