2016-09-26 2 views
1

Я новичок в AngularJS, но я должен изменить небольшой модуль для моего проекта. Вот моя служба завода:

services.factory('NewsService', function($resource) { 

    var result = $resource('http://localhost:8090/boiler/1'); 
    return result; 
}); 

Здесь я использую его:

function IndexController($scope, NewsService) { 

    var result = NewsService.get() 

    $scope.xxx= result.day; 
    $scope.www = result; 

Я не понимаю, почему я могу отправить $ рамки переменной result и использовать его в HTML, как {{www.day}}, но я могу «т отправить $ области видимости свойства переменной result.day и использовать его в качестве {{xxx}}

Это мой Json ответ от сервера

{ 
    "day" : "2016-10-06", 
    "amountOfEnergy" : 40, 
    "cost" : 120, 
    "content" : [ ], 
    "links" : [ { 
    "rel" : "self", 
    "href" : "http://localhost:8090/boiler/1" 
    }, { 
    "rel" : "bathroom", 
    "href" : "http://localhost:8090/boiler/1" 
    } ] 
} 

Кто-нибудь может мне это объяснить?

+0

Не могли бы вы рассказать нам, какую ошибку вы получили или как выглядит '$ scope'? – Andurit

+0

Получение каких-либо eorrs? Когда я проверил в обоих случаях, я могу видеть день .... –

+0

Я не проверяю ошибки в консоли браузера – luafanti

ответ

1

$resource возвращения обещания так использовать $promise.then в контроллере

function IndexController($scope, NewsService) { 
    NewsService.get() 
     .$promise 
     .then(function(response){ 
      console.log(response); 
      var result = response; 
      $scope.xxx= result.day; 
      $scope.www = result; 
     }); 
} 
+0

Это работает, спасибо за ответ, хороший отзыв в моем случае – luafanti

1

Я думаю, это будет лучше (из $resource дока):

function IndexController($scope, NewsService) { 
    $scope.result = {}; 

    NewsService.get({}, function (data) { 
     $scope.result = data; 
    }); 
}; 

и в шаблоне {{}} result.day

+0

Но как получить нормальный объект Java Script из объекта $ resource, потому что мне нужно иметь доступ к его свойствам, например «день» в JS-коде. – luafanti

+0

NewsService.get - функция async и требует обратного вызова, где вы можете работать с результатом. $ scope.result - это обычный объект, а также его можно напрямую использовать в шаблоне. В обратном вызове вы можете сделать что угодно, например 'console.log ($ scope.result.day)' –