【发布时间】:2016-06-02 15:47:11
【问题描述】:
我可以将变量从我的控制器传递到我的工厂。我无法做的是在我的控制器中动态设置新 URL 字符串中的值,并让工厂看到这个值而不是原始缓存的值。 Mu 控制器设置SaveDate.setMyData 中的值如下:
//this function saves the date change
vm.myFunction1 = function ($resource) {
vm.myDate = '/api/Product/SetMilestoneDate/vm.officeKey/vm.whichMilestone/vm.yearSelected/vm.monthSelected/vm.daySelected';
SaveDate.setMyData(vm.myDate);
//this should save the date for milestones
SaveDate.resource.query();
vm.cleanUp();
};
在我的工厂setMyData 确实提取了这个新值。(这里是代码)
myApp.factory('SaveDate', ['$resource', 'SaveUrl',
function saveDateFactory($resource, SaveUrl) {
var myData = '';
//this grabs the data we need for the url below
function setMyData(data) {
myData = data;
}
return {
setMyData: setMyData,
resource: $resource(myData, {}, {
query: { method: "POST", params: {}, isArray: false }
})
};
}]);
我遇到的问题是 Angular 正在提取空字符串值(缓存值)而不是新值。
一种选择是调用一个控制器函数,我在这个位置设置值:
resource: $resource(myControllerFunction(), {}, {
query: { method: "POST", params: {}, isArray: false }
但是如果没有与范围和未定义相关的各种错误,我无法在这里调用控制器函数。在任何其他语言中,传递这个值都非常简单。
如果有人知道如何覆盖当前变量的缓存值或如何在此位置调用控制器函数,我将不胜感激。感谢您的帮助!
【问题讨论】:
标签: angularjs controller factory