2017-01-22 3 views
-1

Угловая версия 1.6, ui.router. Я сталкиваюсь с проблемой разрешения государства. Каждый раз, когда я добавляю функцию разрешения в $ stateProvider, я ничего не вижу. Если я прокомментирую только часть разрешения, моя переменная ставок появляется в представлении с жестко заданными значениями.Угловое разрешение Не загружается

Похоже /bids.json есть данные мне нужно, потому что если я бег console.log($http.get('/sales.json')) без состояния решимости, в моем контроллере, он возвращает следующее:

$$ состояние: Object> Значения: Object > данные: Array [2]> 0: Объект количество: "45342" валюта: "USD"

Где ошибка в коде ниже?

angular.module('salesApp', ['ui.router', 'templates']) 
.config([ 
'$locationProvider', 
'$stateProvider', 
'$urlRouterProvider', 
function($locationProvider, $stateProvider, $urlRouterProvider) { 
    $locationProvider.html5Mode({ 
    enabled: false 
    }); 
    $locationProvider.hashPrefix(''); 

    $stateProvider 
    .state('sales', { 
     url: '/home', 
     templateUrl: 'home/_home.html', 
     controller: 'MainCtrl', 
     resolve: { //whenever I enable this, nothing renders in view 
     postPromise: ['sales', function(salesReturned){ 
      var al = salesReturned.getSales('/sales.json'); 
     }] 
     } 
    }); 

    $urlRouterProvider.otherwise('home'); 
}]) 

.factory('sales', ['$http', function($http){ 
    var o = { 
    sales:[ 
     {currency: 'USD', amount: 5}, 
     {currency: 'USD', amount: 5} 
    ] 
    }; 
    o.getSales = function(JSONurl) { 
     return $http({method: 'GET', url: JSONurl}).success(function(data){ 
     angular.copy(data, o.sales); 
    }); 
    }; 
    return o; 
}]) 

.controller('MainCtrl', [ 
    '$scope', 
    'sales', 
    '$http', 
    function($scope, sales, $http){ 
     $scope.sales = sales.sales; 
    } 
]) 
+1

'postPromise' ничего – charlietfl

+0

Я смущен не вернусь, когда я раскомментировать решимость не содержащий ничего«postPromise»визуализируется в угловом зрения, даже'

привет ' Если я выберу это, тогда мир привет и жестко закодированные переменные 'ставки 'отображают – HoosierCoder

+1

Маршрутизатор ждет вашего обещания для решения со значением перед представлением состояния. Вы не возвращаете разрешенное значение, поэтому оно никогда не отображает – Phil

ответ

0

Надеюсь, это спасет людей от некоторых головных болей: .success(function(data) устарел в угловых 1,6. Нужно использовать .then(function successCallback(response) вместо за: новый angular docs

0

Разрешение объекта postPromise - это массив. Это выглядит странно для меня. Это, вероятно, следует прочитать:

postPromise: function(bidsReturned){ 
    return bidsReturned.getBids('/bids.json'); 
} 

Если вы передаете в массив, чтобы гарантировать, что код работает правильно после преуменьшать то вы, вероятно, следует использовать другой метод. См. Примеры here.

+1

Реализовал ваши предложения, все еще не работал. Этот метод решения основан на: https://thinkster.io/tutorials/angular-rails/wiring-everything-up. Это странно, потому что у меня есть другое приложение на угловом 1.5, чтобы работать таким образом, но по какой-то причине этот не срабатывает. – HoosierCoder

+0

Создайте код или plnkr, который демонстрирует вашу проблему. Тогда мы можем помочь лучше. –

+0

Этот ответ не будет выдаваться. OP правильно использовал аннотацию DI. – Phil

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