イシュー
- angular-vfremote のfactory部分のコードリード
参考
myModule.
factory('doubleMe', ['$q', '$rootScope', function($q, $rootScope) {
return function(inputString) {
var deferred = $q.defer();
Visualforce.remoting.Manager.invokeAction(
'{!$RemoteAction.angular_vfremote_Ctrlr.valueDoubler}',
inputString,
function(result, event) {
$rootScope.$apply(function() {
if (event.status) {
deferred.resolve(result);
} else {
deferred.reject(event);
}
})
},
{ buffer: true, escape: true, timeout: 30000 }
);
return deferred.promise;
}
}]);
myModule はどこで定義?
- name空間='angvfr' のmyModule は、js/app.js
var myModule = angular.module('angvfr', ['angvfr.controllers',
'angvfr.directives',
'angvfr.filters',
'angvfr.services']);
factory は何やるのか?
- factory(name, $getFn);
- サービスのインスタンスを返す。
- ここでは、doubleMeというサービスを登録している
- $getFn は、functionであるべきはずが、配列[第一引数?, 第二引数?, function]になっている。
参考
doubleMe サービス(関数)はどこで使われる?
var myModule = angular.module('angvfr.controllers', []);
myModule
.controller('MyCtrl1', ['$scope', 'doubleMe', function($scope, doubleMe) {
$scope.sfdcResult = '_____';
doubleMe(10).then(function(result) {$scope.example1 = result;})
doubleMe('ten').then(function(result) {$scope.example2 = result;})
$scope.askSFDC = function(input){
doubleMe(input).then(function(result) {$scope.sfdcResult = result;},
function(error) {$scope.sfdcResult = 'ERROR: ' + error.message;}
)
};
}])
.controller('MyCtrl2', [function() {
}]);
doubleMe 関数の第一引数の $q は何?
- $q の defer というメソッドから、 deferred を作成している。
参考