2015-10-05 90 views
0

我使用AngularJs HTML5的移動應用程序初始化工作。在Windows Phone和Android上表現還是不錯的,但在iOS上它會在某些設備上造成性能問題。

的問題是,當我們從一個視圖切換到另一個,控制器不及時,因此$範圍變量不會被初始化加載。我在視圖中使用這些變量進行綁定,所以應該隱藏的元素是可見的。

這與它們是依賴於模型和操作內部控制器單元發生。它正在創造性能問題。

編輯 Imp事件:這不是首次發生視圖加載。當我回到另一種觀點回來,它開始發生(由控制器即無操作。沒有變量被初始化)

+0

你能分享一些代碼? – MegaAppBear

+0

可以使用路由'resolve'來預加載數據。需要更多細節 – charlietfl

+0

那麼這裏沒有警告,但是當我在$ scope.init()函數的末尾應用警報時,警報會一個接一個地出現10次。同樣,當我在上面的Q中編輯時,第一次加載視圖時不會發生。它發生在那之後。 –

回答

0

這是一個有點普遍質疑。但主要有兩件事你可以做。

  1. 解析路由中的數據以確保數據在控制器運行前可用。

  2. 裹在超時變量的作用域,以確保DOM渲染。

+0

dom已經被渲染,但沒有任何東西在控制器內部被操縱。視圖是可見的,因爲它沒有任何操作。 說$ scope.ddlShow是一個用於顯示下拉列表的變量。下拉列表是可見的,$ scope.ddlShow甚至沒有初始化。 Imp事件:第一次加載視圖時不會發生這種情況。當我回到其他觀點並回來時,它開始發生 –

0

假設你正在使用

<div ng-show="isSomeFlag"></div> 
<div ng-hide="isSomeFlag"></div> 

內部控制器,您使用的

$scope.isSomeFlag= true; 

添加以下內容:

<div ng-show="isLoading && isSomeFlag"></div> 
<div ng-hide="isLoading && isSomeFlag"></div> 

並在最後一個控制器行將isLoading標誌設置爲true。

$scope.isSomeFlag = true; 
... 
$scope.isLoading = true; // controller ends here (below) 

以這種方式,元素將按預期行事。然而,還有很多其他方式,例如解析等,但這應該解決您的UI更新問題。