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>