2016-06-05 4 views
0

После этого reference, я пытаюсь сделать в угловом новый service, который служит, чтобы показать сообщение на действия пользователя, как add, edit, update, delete. То, что я сделал в настоящее время,делая работу углового сервиса правильно

meanApp.factory("flash", function($rootScope) { 
    var queue = [], currentMessage = ''; 

    $rootScope.$on('$locationChangeSuccess', function() { 
    if (queue.length > 0) 
     currentMessage = queue.shift(); 
    else 
     currentMessage = ''; 
    }); 

    return { 
    set: function(message) { 
     queue.push(message); 
    }, 
    get: function(message) { 
     return currentMessage; 
    } 
    }; 
}); 

Это часть кода, который я хочу, чтобы ввести в другой контроллер для того, чтобы получить сообщение, когда пользователь может делать основной CRUD в системе. У меня есть postController, где я пытаюсь ввести этот сервис flash.

//considering this example which handles the delete operating 
//delete post 
meanApp.controller('postDeleteController', function($stateParams, $scope, $http, $location, $state) { 
    $http.delete('/api/posts/' + $stateParams.id).success(function(response) { 
     $location.path('/blog/list'); 
     //refresh(); 
    }); 
}); 

Теперь я хочу, чтобы внедрить эту flash службы в этом контроллере и хочу, чтобы показать какое-то сообщение, как post deleted successfully типа сообщения в бутстраповском оповещении когда пользователь удалить пост. Что еще мне нужно добавить, чтобы показать сообщение в моем представлении. Я использую ниже код в моем общем макете, чтобы показать message

<div class="alert" ng-show="flash.get().length"> 
      <b> 
       Alert! 
      </b> 
      <br/> 
      {{flash.get()}} 
     </div> 
+0

что ошибка ?? –

+0

Я ввел 'flash' в мой' postDeleteController', но ничего не получилось – Sid

+0

Ну, я не вижу, где вы храните что-нибудь в очереди. Метод set() никогда не вызывается в опубликованном коде. Кроме того, метод success() устарел уже давно. Используйте then(). Вы также не показываете код контроллера, в который вводится вспышка. –

ответ

1

Вы можете вводить флэш-сервис, который вы создали, как ..

meanApp.controller('postDeleteController', function($stateParams, $scope, $http, $location, $state, flash) { 

И я не уверен, что вы можете использовать вспышку в вашем шаблоне файла directly..So для этого, чтобы работать по-другому будет присвоить значение переменной в контроллере затем использовать в качестве шаблона ..

meanApp.controller('postDeleteController', function($stateParams, $scope, $http, $location, $state, flash) { 
$http.delete('/api/posts/' + $stateParams.id).success(function(response) { 
    $location.path('/blog/list'); 
    $scope.value = flash.get(); 
    //refresh(); 
}); 

});

И в файле шаблона вы можете использовать как ..

<div class="alert" ng-show="value.length"> 
     <b> 
      Alert! 
     </b> 
     <br/> 
     {{value}} 
    </div> 
Смежные вопросы