2014-06-24 64 views
1

我正在转换一个MVC应用程序中的页面与很多内联jQuery的JavaScript到使用typescript的角度。角度事件不更新页面

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

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

  1. 我试图删除所有旧的jQuery代码,以避免问题。

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

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

所有似乎工作正常,但页面未更新。

我该如何找到问题?

谢谢

+1

'所有似乎工作正常,但页面没有更新.'似乎是一个'scope。$ apply'问题。使用角的'$ http'而不是'$ .ajax' – basarat

回答

0

很可能你没有正确处理异步调用。从您的问题中无法分辨出来,但这是您描述的症状中常见的错误。

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

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

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

+0

是的,这是问题...我用$ q来处理异步请求,现在工作得很好......我只有我想要的问题在更新开始时显示动画gif并隐藏结束,但不起作用 –

+0

立即在调用'someFnDoingHttpRequest'然后'showAnimation(false)'之前立即显示您的动画(例如'showAnimation(true)')更新模型后。 – david004

0

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

  1. 转到的Internet Explorer(10或11)

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

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

  4. 设置列和选择显示每个脚本错误通知”

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

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

2

没有看到任何代码,这是很难回答,但如果你的事件绑定到一个元素,要更新回调的东西,你将不得不使用$应用

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

$申请将触发$ digest循环,当你想在angular的上下文之外更新某些内容时应该使用它。