Angular:我变量的值不会改变

时间:2016-08-03 07:45:51

标签: angularjs

我有一个变量name,它有一个初始值,稍后会用它来返回一个获取的值。在我的提取期间,我尝试使用console.log显示我的变量的新值并且正常工作。但是,为什么当我尝试返回更新后的变量时,它会返回原始值,即" initialValue":

return function(item) {
        var name = "initialValue";
        InquiryService.searchLocalHeader(item).then(function(result) {  
            name = result[0].name;
            console.log(name);
        })
        return name;
   }

有没有办法可以保留我指定的最新价值?谢谢!

3 个答案:

答案 0 :(得分:0)

您的函数正在调用您的服务函数 - searchLocalHeader,当服务忙于获取数据时,该函数已到达其结尾并返回初始值。

一个解决方案可能就是这样:

   function myFunc(item) {
        var name = "initialValue";
        InquiryService.searchLocalHeader(item).then(function(result) {  
            name = result[0].name;
            console.log(name);
            return name; // returns latest value
        }, function(error) {
               return name; // in case of error -- returns the initial value
           })

   }

详细了解承诺:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise

答案 1 :(得分:0)

尝试返回当时的功能。它应该是正确的价值。

angular.module('myApp', [])

.filter('customFilter', ['someService', function (someService) {
  function customFilter(input) {
     // manipulate input with someService
     input += someService.getData(); 
     return input;
  }

  customFilter.$stateful = true; // this line makes it stateful
  return customFilter;
}]);

答案 2 :(得分:0)

您需要添加$ state = true

yourServiceName.$stateful = true
return yourServiceName;