【问题标题】:Why doesn't JSON data load immediately in my HTML page?为什么我的 HTML 页面中没有立即加载 JSON 数据?
【发布时间】:2015-09-11 19:51:44
【问题描述】:

这是我的控制器,它将 JSON 数据传输到 Wordpress:

app.controller('AboutController', function($scope, $http) {

$scope.device=device;
var page_id = 2;

$.ajax({
        url: 'http://davidemilone.com/provawp/?json=get_page&page_id='+page_id+'&callback=?',
        dataType: 'jsonp',
        type: 'GET',
        success: function(data) {

                $scope.page=data.page;
                console.log("contenuto" + $scope.page.content);
        }
});
});

现在,这是我的 HTML 页面:

<ons-page ng-controller="AboutController" >
  <ons-toolbar modifier="opacity">
    <div class="left">
      <ons-toolbar-button ng-click="menu.toggle()"><ons-icon icon="ion-navicon-round" fixed-width="false"></ons-icon></ons-toolbar-button>
    </div>
    <div class="center">{{page.title}}</div>
  </ons-toolbar>

  <div class="app-page-content">
    <p class="page-content" ng-bind-html="page.content"></p>
  </div>

为什么数据没有立即加载,只有在我点击返回或轮播自动滑动时才会加载;我做错了什么?

【问题讨论】:

    标签: jquery json angularjs cordova onsen-ui


    【解决方案1】:

    您没有使用 Angular 自己的工具(例如 $http 服务)与服务器通信,因此框架不知道数据已更改。

    要让 Angular 知道 $scope 上的某些内容以非角度方式发生了变化,您应该在分配新数据后运行 $scope.$apply();

    (解释“点击外部”部分:它只是触发摘要循环 - 结果与 $apply() 相同,这就是当时值更新的原因)

    最好使用 $http 服务。我可以看到你已经将它注入到控制器中,所以它可能是一个简单的错误,你使用了 jQuery 的 ajax 函数 insted。 (详见Angular docs for $http service

    app.controller('AboutController', function($scope, $http) {
        $scope.device=device;
        var page_id = 2;
    
        var url = 'http://davidemilone.com/provawp/?json=get_page&page_id='+page_id+'&callback=?';
        $http.jsonp(url).then(function(response) {
            console.log(response.data);
            $scope.page = response.data.page;
        });
    
    });
    

    【讨论】:

    • 如何以与jquery相同的方式获得带有角度的单页?
    • @pinostack 我用代码示例更新了答案。您可以console.log 返回的响应以确定它的确切格式(在这种情况下,我不确定响应正文是否保留在response.data 中;)
    • 如何使用 $scope.$apply() 它可以完美运行;非常感谢您的支持;我将等待您对 $http 请求单页的答复。
    • 结果是这个 Uncaught SyntaxError: Unexpected token davidemilone.com/provawp/api/get_page/?page_id=2;
    • 某处看起来像是错字。确保您所做的与文档中的完全相同(我也尝试过彻底,但最好跳过中介并直接依赖文档来源;))
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-13
    • 1970-01-01
    相关资源
    最近更新 更多