繁体   English   中英

如何通过函数更新$ scope变量

How to update $scope variables through a function

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我目前正在努力从端点获取一些数据,然后更新一个名为$scope.response的变量。 我不太确定如何更新此变量并将其呈现在屏幕上。 那么下面的代码中发生了什么:我从iframe的src属性获取查询字符串,然后将其发布到我的端点,在那里我得到了一个名为data的特定响应。 我想用此对象更新$scope.response ,然后使用{{response}}在视图上呈现它。

有人可以告诉我我该怎么做吗?

app.controller('MainCtrl', function($scope) {

  $scope.response;

  API = {};
  API.endpoint = 'https://some/endpoint/';


  function getParameterByName(name, url) {
    if (!url) url = window.location.href;
    name = name.replace(/[\[\]]/g, "\\$&");
    var regex = new RegExp("[?&]" + name + "(=([^&#]*)|&|#|$)"),
      results = regex.exec(url);
    if (!results) return null;
    if (!results[2]) return '';
    return decodeURIComponent(results[2].replace(/\+/g, " "));
  }

  function doAjax(callback) {
    var q = getParameterByName('QUERY');
    jQuery.ajax({
      url: API.endpoint + "script.php",
      method: "POST",
      data: { q: q },
      dataType: "json",
      success: function (data) {
        callback(data);
        $scope.response = data;
      }
    });
  }

});
2 个回复

Angular并不神奇地知道对象上的属性何时更改,它必须一直不停地重新检查所有对象以捕获此类更改。 当您使用任何Angular服务或事件时,Angular看起来就好像注意到了这些更改,因为这些触发了摘要周期 在摘要周期结束时,Angular检查它知道的对象是否有更改,并传播这些更改(例如,更新视图等)。

当您使用jQuery时,这就是Angular所不了解的东西。 首先,您不应使用jQuery,而应使用Angular的$http服务来发出任何网络请求,因为Angular随后将正确地循环其消化系统。*

*双关语意

如果您必须使用某些非Angular系统(再一次,您根本不必在这里),那么您需要触发另一个摘要周期。 最好的方法是使用$timeout服务:

app.controller('MainCtrl', function($scope, $timeout) {

  ...

        success: function (data) {
          callback(data);
          $timeout(() => $scope.response = data);
        }

  ...

});

为什么在Angular中使用jQuery? 如果选择“ Angular”,则应使用“ $ http”作为“ angular”。 删除功能doAjax并将其替换为$ http。 您可以在这里https://docs.angularjs.org/api/ng/service/$http阅读文档

1 $scope 变量不会在 $interval 函数内更新

我将$interval用于我的自定义秒表。 在$interval函数中,我有一个变量$scope.inputValue绑定到一个范围。 问题是在每次$interval迭代后(每 500 毫秒),最近的 $scope.inputValue 不会被考虑在内,而只考虑初始化时的值(1000)。 如何解决 ...

4 离子更新$ scope变量

经过一阵离子之后,我以一种奇怪的行为挠头: }) 如果我运行更新功能,则在其中可以看到var的正确更新值。 但是,如果我在运行更新一之后运行show函数,那么显示的值就是初始的“红色”。 我想念什么? 提前非常感谢你 ...

5 为什么$ scope中的变量不更新?

编码器中的代码 。 我有两个控制器。 在第一个控制器中,我在视图中有按钮处理程序 在处理程序中,我更改URL。 我还配置了$ routeProvider。 在这里,我有两个具有相同控制器的不同路由- loading控制器因此,在将URL更改为/some新的按钮出现在视图中。 ...

6 从ngRepeat更新$ scope变量

我在视图中有一个ngRepeat循环,对于每个项目,我都有一个自定义切换控件连接到$scope变量,如下所示: 单击链接时, isO n变量将按预期方式切换,但仅适用于单击的项目 。 我希望所有项目都将更新,因为isOn在控制器中定义为$scope.isOn = false 当我 ...

7 为什么$ scope变量不更新?

我的作用域变量有问题。 当我打开表单时,内容会在输入字段中正确显示。 但是当我更改它们并触发ok功能时,更改不会显示。 相反,我得到form.name的内容。 为什么不通过输入字段的ng-model更新范围? 视图: 编辑:这是另一个控制器: 编辑2: ...

10 $ scope函数中的变量

我必须在一个应用程序中拍摄几张照片,并且要使用Ionic和Angular进行拍摄。 我有3个按钮,每个按钮都要拍照。 这是HTML方面: 我有内联CSS没关系,这是一个测试。 这些是功能:其中3个,每个按钮一个。 该功能的作用是:拍照,保存并在srcImage1 / ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2021 STACKOOM.COM