如何使用ngDialog弹出窗口?

时间:2014-08-22 09:05:54

标签: javascript angularjs ng-dialog

我无法使用 ngDialog 模块使用 AngularJs ,所以在我出错的地方寻找一些提示。

我的Json文件名为 abc.json

[{"id":
  [
      {
          "value":"text_id",
          "desc":"Text id"
      },
      {
          "value":"group_id",
          "desc":"Group id"
      },
  ]
}]

角度控制器

'use strict';

angular.module('mine.controllers', [])
        .controller('myController', ['$scope', '$sce', '$http',  function($scope, $sce, $http, ngDialog) {
            $http.get('abc.json')
            .success(function(data) {
              $scope.ids = data;
            });
            $scope.openPlain = function (message) {
              ngDialog.open(message);
            };
          }]);

最后是HTML

<body ng-app="mine">
    <table ng-controller="myController">
        <tr ng-repeat="datas in ids">
            <td>
                <span ng-repeat="iden in datas.id">
                    <a href="" ng-click='openPlain("{{ iden.desc }}")'>{{ iden.value }}</a>, 
                </span>
            </td>
        </tr>
    </table> 
    <script src="//ajax.googleapis.com/ajax/libs/angularjs/1.2.16/angular.min.js"></script>
    <script src="//cdnjs.cloudflare.com/ajax/libs/ng-dialog/0.2.3/js/ngDialog.min.js"></script>
</body>

这是JsFiddle,但我也无法使用JsFiddle,一些不同的错误。

在我的本地计算机中,当DOM加载并且JSON文件中正确显示value时,我不会收到任何错误。但是,当我点击链接时,我收到此错误:

TypeError: Cannot call method 'open' of undefined

所以我猜测没有加载 ngDialog 或其他东西。

2 个答案:

答案 0 :(得分:2)

您没有正确地将ngDialog注入控制器:

这一行:

.controller('myController', ['$scope', '$sce', '$http',  
                              function($scope, $sce, $http, ngDialog) {

这应该是:

.controller('myController', ['$scope', '$sce', '$http', 'ngDialog', 
                             function($scope, $sce, $http, ngDialog) {

这是你的小提琴工作。您没有指定用于布局对话框的模板。无论如何,这会让你更进一步。

http://jsfiddle.net/ys01yoLk/5/

答案 1 :(得分:1)

您遇到了注射问题,您必须在HTML中调用CSS文件。 控制器

.controller('myController', ['$scope', '$sce', '$http', 'ngDialog', 
                             function($scope, $sce, $http, ngDialog) {

HTML:

<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/ng-dialog/0.2.3/css/ngDialog.css" />

然后它有效!