【问题标题】:angularjs does not bind from $http.get factoryangularjs 不从 $http.get 工厂绑定
【发布时间】:2016-08-26 10:58:09
【问题描述】:

我是 Angular 新手,我已经学习了一些课程来让事情顺利进行......

现在我将我的网站与 web 服务 (REST) 连接起来,并将一些结果 (JSON) 绑定到 html 表。

当我运行网站时,webservice 工作正常,通过 angular 控制器触发工厂和 $http.get 它在我的 webservice 中命中断点并返回 JSON。

问题是,我在表格中的“名称”标签上看不到预期的数据。 我确实看到我的表“扩展”了,所以似乎放了一些数据,但它只是空白。

这是我到目前为止所得到的:

JSON 响应:

[{"Id":1,"Name":"E-Plan"},{"Id":2,"Name":"Preliminary Drawing"},{"Id":3,"Name":"Preliminary Design"},{"Id":4,"Name":"Department Layout"}]

表:

<div class="projecttypetable" style="overflow-x:auto;">
        <table style="width:100%">
            <tr data-ng-repeat="pt in projectTypes">
                <td>
                    <p><b>{{pt.Name}}</b></p>
                </td>
            </tr>
        </table>      
    </div>

角度控制器:

spftApp.controller('ProjectTypeController', function ($scope, projectTypesFactory) {

    projectTypesFactory.async().then(function(d) {
        $scope.projectTypes = d;
    });
});

Angular 工厂:

spftApp.factory('projectTypesFactory', function ($http) {

    var urlBase = 'http://localhost:49165/Service1.svc/projectTypes'

    return {
        async: function () {
            return $http.get(urlBase);
        }
    }

我在这里做错了什么?

【问题讨论】:

  • 我现在找到了解决方案......它工作正常,我只需将“Access-Control-Allow-Origin”添加到我的网络配置中!

标签: angularjs web-services rest


【解决方案1】:

数据在 d.data 中。试试这个:

spftApp.controller('ProjectTypeController', function ($scope, projectTypesFactory) {

    projectTypesFactory.async().then(function(d) {
       $scope.projectTypes = d.data;
    });
});

更多信息请查看$http 文档。

【讨论】:

    【解决方案2】:

    如下更新您的角度工厂

    角工厂:

    spftApp.factory('projectTypesFactory', function ($http) {
    
    var urlBase = 'http://localhost:49165/Service1.svc/projectTypes'
    
    return {
        async: function () {
            return $http.get(urlBase).then(function(response) {
               return response;          
    
        });
        }
       }
    }
    

    【讨论】:

    • OP 试图返回 promise 而不是 response,我猜 :)
    • 嗨,我尝试了这两个建议,但它仍然会导致一个空的 HTML 表。我尝试的一件事是使用静态对象而不是 HTML 获取,并且工作正常,因此 HTML 表正在工作 是否存在阻止浏览器显示数据的特定设置?我在某处读到 IIS Express 导致了一些问题......
    猜你喜欢
    • 2013-05-31
    • 1970-01-01
    • 2014-05-02
    • 2014-05-03
    • 1970-01-01
    • 2016-10-27
    • 1970-01-01
    • 2018-11-05
    相关资源
    最近更新 更多