1

Что я делаюAngularJS: Рекомендации по оказанию иной точки зрения, когда HTTP 404

  • Я пытаюсь создать службу, которая загружает бюджеты пользователей за текущий месяц. Код выглядит так:

    $ scope.thisMonthBudgetSummary = function() { console.log ('получение сводки бюджета');

    var date = new Date(); 
        BudgetSummary.get({'month': date.getMonth() + 1, 'year': date.getFullYear()}, 
         function() { 
          // success 
         }, 
         function (error) { 
          //error 
          console.log('error:', error.status); 
         }) 
    }; 
    

Проблема
- Я хочу сделать другой взгляд на одной странице, когда ответ HTTP является 404, что рекомендация по этому поводу? Я смущен
- Я считаю, что это не очень хорошая идея, чтобы жестко закодировать имя шаблона в контроллере

+0

Я думаю, вы должны перенаправить на маршрут 404, если вы не хотите жестко кодировать имя шаблона –

ответ

1

$http перехватчик, безусловно, один из способов, в конфигурации вашего приложения вы можете сделать:

$httpProvider.interceptors.push(['$q', '$location', function ($q, $location) { 
       return { 
        'request': function (config) { 
         return config || $q.when(config); 
        }, 
        'requestError': function (rejection) { 
         return $q.reject(rejection); 
        }, 
        'response': function (response) { 
         return response || $q.when(response); 
        }, 
        'responseError': function (rejection) { 
         if (rejection.status == "404") { 
          $location.path("/yourErrorRoute") 
         } 
         return $q.reject(rejection); 
        } 
       }; 
}]) 
1

Если вы хотят использовать функциональность по умолчанию в вашем приложении, ответ @Mohammad Sepahvand работает. Если вы просто хотите одноразовую для этого запроса, вы можете сделать:

var date = new Date(); 
BudgetSummary.get({'month': date.getMonth() + 1, 'year': date.getFullYear()}, 
    function (data, status, headers, config) { 
     //check your status here--> 
     if (status === '200'){ 
      $location.path('/path/to/other/route'); 
     } 
    }, 
    function (data, status, headers, config){ 
     //check your status here--> 
     if (status === '404'){ 
      $location.path('/path/to/other/route'); 
     } 
    }) 
}; 
Смежные вопросы