我无法使用 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 或其他东西。
答案 0 :(得分:2)
您没有正确地将ngDialog注入控制器:
这一行:
.controller('myController', ['$scope', '$sce', '$http',
function($scope, $sce, $http, ngDialog) {
这应该是:
.controller('myController', ['$scope', '$sce', '$http', 'ngDialog',
function($scope, $sce, $http, ngDialog) {
这是你的小提琴工作。您没有指定用于布局对话框的模板。无论如何,这会让你更进一步。
答案 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" />
然后它有效!