Angular如何将范围传递给服务查看?

时间:2014-06-30 11:55:28

标签: javascript angularjs templates view scope

我在帮助服务中有全局功能。

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

        $('#myModal').modal();
    };

在我的模板中,我有标准的Bootsrap模态窗口。问题是我是否尝试使用以下方式访问范围:

{{modalProperties.modalTitle}} 

没有显示任何内容。

如果我想使用全局可用函数并将数据从此全局函数传递到可访问范围,如何解决它?

感谢您的任何建议。

2 个答案:

答案 0 :(得分:0)

服务(工厂)是单身人士,而不是很好的做法(我会说你可以)为服务注入范围。


在你要避免代码重复的情况下,我会创建指令(隔离范围),在 link 函数中你可以编写所有相关的逻辑。

此演示可能会帮助您 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;
      }
    }
  };
})

答案 1 :(得分:0)

首先定义$ scope.modalProperties = [];在你的控制器中。 然后,当您从控制器调用displayModalwithInput函数时,请将$ scope作为参数之一传递。例如displayModalwithInput($ scope,...) 如果它不起作用,我想看看你的全球服务代码。