【问题标题】:angular event doesn't update page角度事件不更新页面
【发布时间】:2014-08-14 07:26:34
【问题描述】:

我正在使用 typescript 将具有大量内联 jquery javascript 的 mvc 应用程序中的页面转换为 angular。

第一次调用工作正常,但我有一个问题:基于下拉列表中的选择,事件更新视图中的几个控件,进行一些 ajax 调用,最后使用来自调用的数据更新视图。

似乎转换工作正常,但在调用结束时页面没有更新。

  1. 我试图删除所有旧的 jquery 代码以避免出现问题。

  2. batarang 和 java 控制台没有报告错误。

  3. 最终的 ajax 调用完成,结果显示在调试中。

似乎一切正常,但页面没有更新。

如何找到问题所在?

谢谢

【问题讨论】:

  • All seems to work fine, but the page isn't updated. 似乎是一个scope.$apply 问题。使用 Angular 的 $http 而不是 $.ajax

标签: angularjs visual-studio typescript


【解决方案1】:

如果您想“找到问题”,那么您可以使用以下选项。

  1. 转到 Internet Explorer(10 或 11)

  2. 从设置菜单中选择“Internet 选项”。

  3. 转到“高级”标签(最后一个标签)

  4. 设置已列出并选择显示有关每个脚本错误的通知

  5. 取消选择禁用脚本调试(Internet Explorer)”和“禁用脚本调试(其他)

  6. 再次运行程序,您将收到有关在显示实际结果时发生的实际问题的通知。

【讨论】:

    【解决方案2】:

    很可能您没有正确处理异步调用。从您的问题中无法判断,但您描述的症状是一个非常常见的错误。

    确保在$http 请求返回的承诺的.then() 方法中更新模型。例如

    someFnDoingHttpRequest().then(function(data){ 
            // updated the model with the data 
            })
    

    另外(另一个常见错误)确保 someFnDoingHttpRequest() 返回一个承诺。

    【讨论】:

    • 是的,这就是问题所在...我使用 $q 来处理异步请求,现在工作正常...我只有一个问题,我想在更新开始并隐藏结束,但不起作用
    • 在调用someFnDoingHttpRequest 之前立即显示您的动画(例如showAnimation(true)),然后在您更新模型后立即显示showAnimation(false)
    【解决方案3】:

    没有看到任何代码,很难回答,但是如果您将事件绑定到元素并希望在回调中更新某些内容,则必须使用 $apply

    scope.$apply(function () {
        // your code
    });
    

    $apply 会触发一个 $digest 循环,当你想在 Angular 的上下文之外更新某些东西时应该使用它。

    【讨论】:

      猜你喜欢
      • 2016-10-23
      • 1970-01-01
      • 1970-01-01
      • 2019-03-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多