Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用ngDialog获得弹出窗口?_Javascript_Angularjs_Ng Dialog - Fatal编程技术网

Javascript 如何使用ngDialog获得弹出窗口?

Javascript 如何使用ngDialog获得弹出窗口?,javascript,angularjs,ng-dialog,Javascript,Angularjs,Ng Dialog,我无法使用这个ngDialog模块来处理AngularJs,所以我想知道我哪里出错了 我的Json文件名为abc.Json 角度控制器 'use strict'; angular.module('mine.controllers', []) .controller('myController', ['$scope', '$sce', '$http', function($scope, $sce, $http, ngDialog) { $http.get

我无法使用这个ngDialog模块来处理AngularJs,所以我想知道我哪里出错了

我的Json文件名为abc.Json

角度控制器

'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);
            };
          }]);
.controller('myController', ['$scope', '$sce', '$http', 'ngDialog', 
                             function($scope, $sce, $http, ngDialog) {
最后是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>

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

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

这一行:

.controller('myController', ['$scope', '$sce', '$http',  
                              function($scope, $sce, $http, ngDialog) {
这应该是:

.controller('myController', ['$scope', '$sce', '$http', 'ngDialog', 
                             function($scope, $sce, $http, ngDialog) {
这是你的小提琴。您没有指定用于布局对话框的模板。无论如何,这会让你走得更远


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

'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);
            };
          }]);
.controller('myController', ['$scope', '$sce', '$http', 'ngDialog', 
                             function($scope, $sce, $http, ngDialog) {
HTML:



那就行了

我认为您的
$scope
在应用程序中的作用域是错误的。我改变你的想法。在点击链接之前,点击run fiddle。这可能对你有用。但在你的小提琴中,
$scope
是失控的。我可能一点也不了解您的问题,但您需要在控制器之外定义$scope.openPlain。这将修复您的
类型错误:无法调用未定义的方法“open”
您不能在角度控制器之外使用角度
$scope
。请参见此处ngDialog中的示例。。。它使用角度范围来运行其MethodsHanks。。。模型中的注入消除了错误。。但是,弹出窗口没有显示thoughWell,这是您需要返回到ngDialog并了解其工作原理的地方。我阅读了文档,但我没有看到它实际上能够显示弹出窗口。在看了这个例子之后,看起来还有很多东西需要设置。在继续之前,您可能应该阅读以下内容:
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/ng-dialog/0.2.3/css/ngDialog.css" />