【发布时间】:2017-09-16 18:18:49
【问题描述】:
在我对input[submit] 的看法中,单击我从控制器执行函数,该函数从服务执行另一个函数。
controller.js
colorCheckerService.colorCheck(vm.color_field);
每当用户单击提交按钮时都会启动。接下来检查颜色后,我从其他服务执行另一个功能:
this.colorCheck = function(color_field) {
console.log('im working colorCheck function in service');
switch (color_field.charAt(0)) {
case 'r':
console.log('its RGB');
colorChangerService.colorChange.fromRGB.prepareAndExecute(color_field);
break;
所以 colorChangerService.colorChange.fromRGB.prepareAndExecute(color_field); 行在 service1 中,它正在启动 service2
toHEX: {
supportFunc: function(number) {
var hex = number.toString(16);
return hex.length == 1 ? '0' + hex : hex;
},
convert: function(r, g, b) {
var lol = '#' + this.supportFunc(r) + this.supportFunc(g) + this.supportFunc(b);
console.log(lol);
}
},
prepareAndExecute: function(color_field) {
// preparing
var numbers = color_field.match(/\d+/g);
if(numbers.length == 3) {
this.toHEX.convert(+numbers[0], +numbers[1], +numbers[2]);
} else {
alert('wrong RGB number format');
}
这基本上是将 RGB 转换为 HEX。它工作得很好,它在console.log(lol); 行完成工作。 lol 变量包含转换后的颜色。
这个console.log方法从开始到结束的路很长,简单来说就是:view(click)->controller->service1->service2。
现在的问题是,如何将这个变量 lol 传递回控制器,以便最终在视图中显示这个转换后的颜色?
我已经尝试过承诺但没有运气。如果我只有一项服务,使用 Promise 会容易得多。
【问题讨论】:
-
要从函数传回值,请使用return statement。
-
你尝试了一些没有运气的东西,但你没有向我们展示没有运气的代码。很遗憾,我们无法修复我们看不到的代码。
标签: javascript angularjs parameter-passing