我有一个Mongo,Express,Angular,Node应用程序。我试图将一个变量作为1个文件中的方法的响应传递给不同文件中的不同方法。
因此,在一系列用户操作期间,它会触发exports.test
文件中的方法test.controller.js
看起来像这样:
exports.test = function(req, res) {
var query = 'crazy query'
var params = { key:value }
var cb = function(err,stuff) {
});
res.json(stuff);
var testOutput = res.json(stuff);
return testOutput;
}
sendToServer(query,params,cb);
}
注意我如何将testOutput设置为等于来自服务器的响应。我从方法中返回了testOutput。
现在我很好奇,我有另一个控制器actions.controller.js
。在这个文件里面我有一个名为exports.actions
的方法
看起来像这样:
exports.actions = function(req, res, testOutput) {
console.log(testOutput);
var query = 'crazy query'
var params = { key:value }
var cb = function(err,stuff) {
});
res.json(stuff);
}
sendToServer(query,params,cb);
}
我试图将test testOutput从test.controller.js暴露给actions.controller.js,因此我可以将testOutput
作为参数传递给exports.actions
方法。这可能吗?
答案 0 :(得分:0)
您不能将任何变量直接暴露给其他控制器。控制器之间的通信可以通过服务进行
定义要更新的服务并保存testOutput的值:
angular.module('myApp',[])
.factory('myService',function(){
var init = {};
init.update = function(newVal) {
init.testOutput = newVal;
};
return init;
}]);
您的控制人员:
angular.module('myApp')
.controller('Ctrl1',['myService',function(myService){
exports.test = function(req, res) {
var query = 'crazy query'
var params = { key:value }
var cb = function(err,stuff) {
});
res.json(stuff);
var testOutput = res.json(stuff);
myService.update(testOutput);
}
sendToServer(query,params,cb);
}
}]);
angular.module('myApp')
.controller('Ctrl2',['myService',function(myService){
exports.actions = function(req, res) {
console.log(mapService.testOutput); //use the variable as u like
var query = 'crazy query'
var params = { key:value }
var cb = function(err,stuff) {
});
res.json(stuff);
}
sendToServer(query,params,cb);
}
}]);