这是我正在与我的工厂打电话的功能
var myService = function($http) {
return {
bf: null,
initialize: function() {
this.promise = $http.get(this.server + "/requestkey").success(function(data) {
myService.bf = new Blowfish(data.key);
});
}
}
我正在使用
创建此对象TicTacTorrent.service('AService', ['$http', myService]);
但是,当调用AService.initialize()时,它会像它应该创建promise对象,但它不会更新BF对象。我对如何将bf对象更新为新值感到困惑。我如何引用myService.bf,因为this.bf会为.success函数创建一个本地实例?
答案 0 :(得分:1)
试试这个:
var myService = function($http) {
this.bf = null;
return {
bf: this.bf,
initialize: function() {
this.promise = $http.get(this.server + "/requestkey").success(function(data) {
myService.bf = new Blowfish(data.key);
});
}
}
答案 1 :(得分:0)
你想在哪里初始化? 你看过$provider示例代码了吗? 搜索“提供商(名称,提供商)”并检查它是否符合您的需求。
否则我不确定你编写的代码是什么样的。
我经常写这样的工厂:
angular.module('app').factory('myService', ['$http', function($http) {
var publicObj = {};
publicObj.bf = ""; // Just to make sure its initialized correctly.
publicObj.initialize = function() {snip/snap... myService.bf = new Blowfish(data.key);};
return publicObj;
}]);
不同之处可能是您之前的代码返回了一个内联匿名对象,该对象可能很难引用自身。但是通过这个逻辑,它应该只需让myService返回一个预先声明的var并返回它。