2014-11-24 185 views
4

没有太多的w /搜索。我在这里发现了一个类似的线程,但它对我来说并不适合。AngularModalService:将数据传递给控制器​​

这些例子表明Modal将得到一个单独的控制器。看起来像这样。

var app = angular.module('myApp', ['ngSanitize','angularModalService']); 
app.controller('SampleController', ['$scope', function($scope) { 

    $scope.showAlert = function() { 

     ModalService.showModal({ 
      templateUrl: "alertWindow.html", 
      controller: "AlertController", 
      inputs: { 
       title: "Add New Alert", 
      } 
     }).then(function(modal) { 
      modal.element.modal(); 
      modal.close.then(function(result) { 
       $scope.result = "blah"; 
      }); 
     }); 

    }); 
}]); 

app.controller('AlertController', ['$scope', function($scope) { 

    $scope.close = function(result) { 
     close(result, 500); 
    }; 
}]); 

我有的警告是,我希望模态对话框有一些SampleController默认值。我阅读了服务,但我认为这不适用于此。输入:showModal()中的{}看起来很可疑,但我不确定从显示模式窗口的位置获取它的位置。我见过的其他例子只是提供了简单的是/否按钮或文本输入w /空默认值。

+0

首先,它看起来像是有语法错误。当你定义你的控制器时,你错过了一个方括号']'。另外,你的$ scope.showAlert不在你的SampleController中。 – 12hys 2014-11-24 01:47:55

+0

你是对的 - 谢谢你的抬头。编辑。然而,那正是我在窗口中编辑它的易读性时,因为控制器中肯定会出现比在这里需要显示更多的信息。所以,我的问题依然存在。现在至少应该更容易阅读代码。 – 2014-11-24 02:13:16

+0

您不在SampleController中包含您的ModalService依赖项。你有没有在任何地方定义ModalService? – 12hys 2014-11-24 02:19:03

回答

7

根据文档,您将输入注入模态控制器。由于标题是您在上面提到的输入,因此您需要将模态控制器更改为:

app.controller('AlertController', ['$scope', 'title', function($scope, title) { 
    $scope.title = title; 

    $scope.close = function(result) { 
     close(result, 500); 
    }; 
}]); 
+0

谢谢 - 现在在工作,但我会回家时检查。 – 2014-11-24 15:32:38

+0

这工作。谢谢。对不起,我花了很长时间才回到它。 – 2014-11-29 05:58:56

+0

谢谢它为我工作。把这个标题传回给SampleController怎么样?任何人都可以帮助我。 – 2016-10-21 09:35:28