如何刷新iframe网址?

Tes*_*ser 3 angularjs cordova ionic-framework ionic

我正在创建一个使用ionic的应用程序,我在其中使用iframe显示URL.这是HTML代码:

  <iframe id="myFrame" width="100%" height={{iframeHeight}}>
Run Code Online (Sandbox Code Playgroud)

这是角度js:

 $scope.iframeHeight = window.innerHeight;
                        document.getElementById("myFrame").src = value['url'];
Run Code Online (Sandbox Code Playgroud)

一切正常,但是当我从后端对网站进行更改并刷新应用程序时,新的更改不会出现在应用程序中.

Pan*_*kar 9

您在代码中所做的事情并不是一种有效的方法.您正在使用不会运行摘要周期的本机方法操作DOM,您需要通过执行手动运行它$scope.$apply().这将解决您的问题,但通常您不应该从控制器执行DOM操作,这被视为BAD练习.相反,我建议你使用角度双向绑定功能.在范围范围变量中分配url并在iframe标记上添加,ng-src="{{url}}"以便srcURL将通过angular更新,并且url get update iframe将从其中加载srcURL中的内容.

HTML

<iframe id="myFrame" width="100%" ng-src="{{url}}" height={{iframeHeight}}>
Run Code Online (Sandbox Code Playgroud)

$scope.url = "http://example.com"
Run Code Online (Sandbox Code Playgroud)

当您在控制器中更改范围变量时src,iframe iframe的内容也会发生变化并重新加载内容.

更新

要解决缓存问题,您需要将当前日期时间附加到您的URL,每次创建一个新URL时,浏览器都不会缓存它.喜欢的东西$scope.url = "http://example.com?dummyVar="+ (new Date()).getTime()通过这一点,就不会伤害你的当前行为,只需要追加dummyVar与将始终是唯一的当前时间值.

$scope.url = "http://example.com?dummyVar="+ (new Date()).getTime()
Run Code Online (Sandbox Code Playgroud)