Angularjs 在控制器中使用服务功能';如果

Angularjs 在控制器中使用服务功能';如果,angularjs,Angularjs,我试图根据我的服务功能设置元素的可见性。 有没有一种方法可以在不重复控制器内的功能的情况下实现这一点 服务: angular .module('app') .service('userService', userService); userService.$inject = ['$window', '$rootScope', '$uibModalStack', '$state']; function userService($window, $rootScope, $uibModalStac

我试图根据我的服务功能设置元素的可见性。 有没有一种方法可以在不重复控制器内的功能的情况下实现这一点

服务:

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',[])
.service('userService',function(){
var服务=这个;
service.returnTrue=函数(){
返回true;
}
})
.controller('mainCtrl',函数(userService){
var vm=这个;
vm.disableSave=true
vm.returnTrue=函数(){
return userService.returnTrue()
};
})

如果返回的值为true,则显示


您可以将
服务添加到
vm
中,然后在模板中访问该服务

i、 e

您可以根据需要更新控制器

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>

显示服务的函数是否返回true


这不是在复制userService吗?它不是在复制,它只是引用同一个对象。另外,在模板中并没有直接访问服务的方法。@lazotibijczyk这很好,因为服务是单例的。只创建了一个实例,但可以在其他地方多次引用。建议的副本的可能副本不是问题的好答案。它没有给出一个很好的模板示例。公认的答案声称在模板中嵌入函数是一种不好的做法,但没有解释原因。
<div>
   <p ng-if="vm.userService.returnTrue()">Display if service's function returns true</p>
</div>