Использование сервисной функции в контроллере ng-if - PullRequest
0 голосов
/ 30 августа 2018

Я пытаюсь настроить видимость элемента на основе функции моего сервиса. Есть ли способ сделать это без повторения функции внутри контроллера снова?

Услуги:

angular
.module('app')
.service('userService', userService);

userService.$inject = ['$window', '$rootScope', '$uibModalStack', '$state'];

function userService($window, $rootScope, $uibModalStack, $state) {

    var service = this;
    service.user = {};

    service.returnTrue= function() {
        return true;
    };

};

HTML-код контроллера:

<div>
   <p ng-if="userService.returnTrue()">Display if service's function returns true</p>
</div>

Я хочу избежать дублирования функции в моем контроллере, как это

angular
    .module('app')
    .controller('mainController', mainController);

mainController.$inject = ['userService'];

function mainController(userService) {

    var vm = this;

    vm.returnTrue = function() {
        return userService.isInRole() 
    };
}

Вот фрагмент того, чего я избегаю

angular.module('app',[])

.service('userService', function(){
   var service = this;
   
   service.returnTrue = function() {
       return true;
   }
})

.controller('mainCtrl', function(userService){
  var vm = this;
  vm.disableSave = true
  
  vm.returnTrue = function() { 
     return userService.returnTrue()
  };
})
<html ng-app="app">
 <body>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-controller="mainCtrl as vm">
  <p ng-if="vm.returnTrue()">Display if value returned is true</p>
</div>
  </body>
 </html>

1 Ответ

0 голосов
/ 30 августа 2018

Вы можете добавить service к vm и затем получить к нему доступ в своем шаблоне.

т.е.

Вы можете обновить свой контроллер как

function mainController(userService) {
    var vm = this;
    vm.userService = userService;
}

И ваш HTML как

<div>
   <p ng-if="vm.userService.returnTrue()">Display if service's function returns true</p>
</div>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...