角度和$q:奇怪的是,什么都没有工作

Angular and $q: strangely, nothing is working at all

本文关键字:什么 工作      更新时间:2023-09-26

我在网站上看到了一个关于如何使用$q的示例,并尝试将其粘贴到测试项目中,并进行一些更改。

我试图实现的功能是按下一个按钮,检索我在根目录中的 JSON 文件,当前提成功时,在 ng-repeat 指令中显示 JSON 内容。

这是我的服务,它使用$q的承诺:

app.factory('dataService', ["$http", "$q", function($http, $q) {
    return {
        getAll: getAll
    }
    function getAll() {
        var defered = $q.defer();
        var promise = defered.promise;
        $http.get('data.json')
            .success(function(data) {
                defered.resolve(data);
            })
            .error(function(err) {
                defered.reject(err)
            });
        return promise;
    }
}

}(;

这是 HTML。奇怪的是,我的 ng-show 指令根本不起作用;跨度一直显示 Angular 表达式,就好像根本没有导入 Angular 一样:

   <!DOCTYPE html>
<html ng-app="miApp">
    <head>
        <meta charset="UTF-8">
        <script src="angular.js"></script>
        <script src="mainmodule.js"></script>
        <link rel="stylesheet" href="bootstrap/css/bootstrap.css">
    </head>
    <body ng-controller="Controller1">
    <button ng-click="receive()">Import data</button>
      <span ng-show="dataArrived" ng-repeat="user in users">- Name: {{user.name}}, Age: {{user.age}}, Job: {{user.job}}</span>
      </div>
    </body>
</html>

最后,我的控制器:

app.controller('Controller1', ["$scope", "dataService",
    function($scope, dataService) {
        $scope.dataArrived = false;
        $scope.receive(function() {
            dataService.getAll().then(function(data) {
                $scope.users = data;
                $scope.dataArrived = true;
            }).catch(function(err)) {
                alert("Error: " + err);
            }
        });
    }
]);

我根本不知道发生了什么。Angular 对我来说似乎被打破了:它在控制台上没有显示任何错误(整天都是这样,我真的很讨厌这个平台(,它不评估表达式,指令只是不起作用,等等。

我想我的代码的某些部分正在破坏这一切,但它应该显示该死的错误消息,所以也许我只是遇到了一些设计问题。有人能发现出了什么问题吗?

旧代码中的大量错误。这是一个固定的 plnkr: http://plnkr.co/edit/NN0eXFg87Ys2E3jjYQSu?p=preview

问题主要是您没有将receive函数正确分配给范围。它必须像这样完成:

 $scope.receive = function() {

你的代码就像

 $scope.receive(function() {

你有一个没有开始标签的结束div标签,所以这可能会弄乱你的html