如何将作用域从服务传递给view

Angular How to pass scope to view from service?

本文关键字:view 服务 作用域      更新时间:2023-09-26

在helper服务中设置全局函数

this.displayModalWithInput = function ($scope, title, cotroller, functionCallback) {
        $scope.modalProperties = {
            modalTitle : title,
            modalController : cotroller,
            modalFunction : functionCallback
        };
        $('#myModal').modal();
    };

在我的模板中,我有标准的引导模式窗口。问题是,如果我试图访问范围使用:

{{modalProperties.modalTitle}} 

无显示

如何解决它,如果我想使用全局可用函数和传递数据从这个全局函数到可访问的范围?

谢谢你的建议。

首先定义$scope.modalProperties=[];在你的控制器里。然后,当你从控制器调用displayModalwithInput函数时,请传递$scope作为参数之一。例如displayModalwithInput($scope,…)

服务(工厂)是单例的,给服务注入作用域不是好的做法(我认为你不能)。


在你的情况下,为了避免代码重复,我会创建指令代替(隔离作用域),在链接函数中,你可以编写所有相关的逻辑。

这个Demo可能会帮助你PLUNKER

指令示例

.directive( 'confirmPopup', function () {
  return {
    restrict: 'A',
    replace: true,
    scope: { title: '@', content: '@', placement: '@', animation: '&', isOpen: '&', func: '&' },
    templateUrl: 'confirmPopup.html',
    link: function ($scope, element, attrs) {
      $scope.confirm = function(){
        $scope.$parent.deleteThing();
        $scope.$parent.tt_isOpen = false;
      }
      $scope.cancel = function(){
        $scope.$parent.tt_isOpen = false;
      }
    }
  };
})