我有以下情况,我使用jQuery preload插件。
angular.module('app')
.factory('Preloader', function Preloader(Videos) {
return {
start: function() {
$.html5Loader({
filesToLoad: Videos.query(),
onBeforeLoad: function() {},
onComplete: function() {
//$scope.loaded = done
},
onElementLoaded: function(obj, elm) {},
onUpdate: function(percentage) {
//$scope.precentage = precentage
}
});
}
}
});
我建立了一个包装插件的工厂。
在我的控制器中,我有类似的东西:
angular.module('playlist')
.controller('Ctrl', function($scope, Preloader, Videos) {
Preloader.start();
在HTML上我有一个加载屏幕,我想用ng-if ="!加载"隐藏。
有人可以解释一下如何将$ scope.loaded从工厂链接到我的控制器内的$ scope.loaded吗?
答案 0 :(得分:2)
指令是这种情况下的正确方法,而不是工厂。
这样,您可以使用指令loaded
公开$scope
变量。
如果您仍想使用工厂,请将loaded
变量作为工厂成员公开,以便您可以监视控制器中的更改。
修改强>
要致电start
,您可以使用事件或双向绑定(这是我最喜欢的)