javascript - 是$http吗?是 $scope.$apply 吗?

标签 javascript angularjs

我是 AngularJS 的新手(使用 v.1.2.27)。我有一个像这样的简单 Controller (html 在其头部部分包含 .js 文件..duh!):

'use strict';

var sample = angular.module('ding', []);    
    sample.controller('sampleCtrl',function($scope,$http){
        $scope.testme = "sdsds";
        $http.get('/get/me/some/data').
            success(function(data, status, headers, config) {
                $scope.datayouwant = data;
            }).
            error(function(data, status, headers, config) {
            });     
        });

对“/get/me/data”的 AJAX 调用有效,不需要 JSONP 的东西来完成这项工作。现在有一段像这样的明显/简单的 html:

   <dt ng-controller='sampleCtrl'>United States</dt>
    <dd>{{ testme }}</dd>

表达式 testme 或 {{ datayouwant }} 不产生任何结果。我只需要在此处显示来自 AJAX 调用的值(一种单向数据绑定(bind))。我对为什么它不起作用感到困惑和茫然。我在 chrome 和 FF(都是最新版本)中进行了测试。我读了一些关于 $scope.$apply() 的东西,但也读到 $http 隐含地有那个电话,甚至试图包括但 FF/chrome 大声提示......

请帮帮我。

最佳答案

您的 Controller 也需要包装 dd,因为这需要来自 Controller 的范围绑定(bind)。目前它仅适用于 dt,因为您在 dt 上有 ng-controller 指令。

例如尝试:

  <dl ng-controller='sampleCtrl'>
    <dt >United States</dt>
    <dd>{{ testme }}</dd>
  </dl>

所以经验法则是,当您在任何元素上使用 ng-controller 指令时,只有该元素和该元素内的任何内容(独立范围指令除外)将直接或间接访问 Controller 范围(原型(prototype)继承)。在您的情况下, Angular 会从 dd 的可用范围评估 testme 的值,如果没有其他 Controller 包装它们,它将针对 $rootScope 进行评估 如果该范围内该属性的值不可用,则不会显示任何内容。

是的,你是对的,你不需要在运行 http 回调后执行 $scope.$apply()。 Angular 内部会触发摘要循环。

工作代码

var sample = angular.module('ding', []);
sample.controller('sampleCtrl', function($scope, $http) {
  $scope.testme = "sdsds";
  $http.get('/get/me/some/data').
  success(function(data, status, headers, config) {
    $scope.datayouwant = data;
  }).
  error(function(data, status, headers, config) {});
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="ding">
  <dl ng-controller='sampleCtrl'>
    <dt>United States</dt>
    <dd>{{ testme }}</dd>
  </dl>
</div>

关于javascript - 是$http吗?是 $scope.$apply 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28018188/

相关文章:

javascript - 尝试让 stylize() 使用 CSS 样式分别随机选择单元格 bgcolor 和文本样式

javascript - Oracle MAF : TypeError: Object[object Object] has no method 'signature'

javascript - 如何将我的 Vue js SPA 部署到我的 Django 服务器中?

javascript - 世博会 OTA 更新 : Update version in app. json?

javascript - Angular JS 中的 $http.get API

html - 在标签和 div 周围使用 ${}

javascript - NodeJs MongoDB 嵌套查询 - 同步运行回调

javascript - 在 Angularjs 中选中一个或多个复选框后激活按钮

javascript - 在 API 上启用 CORS

javascript - AngularJs RouteName 没有更新