2015-05-20 6 views
1

Я пытаюсь использовать $ scope внутри фабрики, чтобы запасти значение, но я не могу.Переменная внутри функции обратного вызова angularjs

Я также пытаюсь нажать значение в массив, это не сработает.

Я просто хочу скопировать значение обратного вызова в переменную, чтобы вернуть ее с завода.

Это пример:

var cpy = {}; 
$http.get('/api/things/') 
.success(function (data){ 
      cpy = data; 
     }) 
     .error(function (err){ 

     }); 

console.log(cpy); 

Спасибо за вашу помощь.

+0

вы должны использовать promsie. https://docs.angularjs.org/api/ng/service/$q – user3227295

+0

@ user3227295 $ http уже возвращает обещание. – Okazari

+0

функция console.log, запущенная перед функцией обратного вызова – user3227295

ответ

1

Это было почти то, что вам нужно.

Вы завод должен выглядеть следующим образом:

var getCopy = function(){ 
    return $http.get('/api/things/'); 
} 

И в контроллере вы получите его, как это:

myfactory.getCopy().success(function(data){ 
    $scope.myscopedvar = data; 
}); 

Если вы хотите, чтобы некоторые привязки в Вашей области всегда будет сделано в контроллер. Если это асинхронный вызов, вы должны знать, что делать, когда решение $ http обещает решить.

Упование помогло, если вы хотите больше объяснений, не стесняйтесь спрашивать.

0

Благодаря Максиму, Оказари и пользователю3227295.

мой завод выглядеть следующим образом:

angular.module('feedbackApp').factory('Data', function ($http, $q, Auth) { 
    $http.get('/api/things/') 
    .success(function (data){ 
       cpy = data; 
      }) 
      .error(function (err){ 

      }); 
       return {first : true}; 
      }); 

Я просто хочу, чтобы проверить, если КПЮ не было пустым, чтобы вернуть ложь и возвращает истину для пустого переменной.

Извините, что задал вопрос без особых проблем.

спасибо.

+0

Вы попробовали мое решение? Вы должны сделать это в своем контроллере в методе .success() – Okazari

+0

, он не работает, мне нужен завод, потому что у меня есть загрузочный модальный, чтобы отображать приветственное сообщение только один раз, когда вы его закрываете, я вставляю в базу данных, затем каждый вход в систему вы не увидите приветственного сообщения. – solidsnake

Смежные вопросы