Nativescript學習遇到的一些問題

1.    Navigation

一個APP通常需要從一個頁面跳到另外一個頁面

問題1:

官方給出的簡單跳轉方法是使用frame模塊的topmost框架中的topmost()方法,

官方代碼:

問題:使用官方給的代碼跑不了

解決:直接連接一起使用

問題2:

    跳轉傳值,官方提供的方法是在frameModule.topmost().navigate()傳入的是一個navigationEntry實體,這個實體包含moduleName和context,context以鍵值的方式保存要傳的值。而在另外的一個頁面中,暴露pageNavigatedTo(args)方法來獲取傳進來的context。

官方代碼:


問題:在另外的頁面沒有具體的方法獲取到傳入的值
解決:使用以上官方的方法,修改另外的頁面的xml文件,在page的loaded方法中調用js的pageNavigatedTo(),並且對要顯示傳入值的label的text與傳入時的key進行綁定。如

2.    DataBinding

問題1:

    爲TextField中的text進行數據綁定。當在xml添加一個textfield元素,並在js對xml中的textfield的text進行數據綁定時,可以text顯示成功;但是在代碼中動態添加textfield併爲其text添加數據綁定時,text缺綁定不成功,未顯示效果。

官方代碼:

解決:text屬性綁定爲解決,但是如果把text改爲hint就可顯示效果。

3.    ListView

問題1:

     場景:在JS中聲明一個ListView對象,並在ListView的itemLoading事件中動態添加ListView的每個item。

那麼問題來了:因爲動態添加item的時,需要藉助items屬性去確定item中text的值;而items是一個ObservableArray對象,也就是它跟item的text是綁定到一起的。當在某個方法中往items push一個值的時候,它默認調用itemLoading一次,而且傳進來的參數的index值是0,而不是要添加的view在ListView的位置。

解決:在itemLoading事件中添加判斷當前要添加view的item的index值。

問題2:

     場景:設置Page加載時會調用onPageLoaded方法,在onPageLoaded中直接聲明一個Observable對象和ObservbleArray對象,通過push方法初始化ObservableArray的值,並通過Observable的set方法把ListView的items屬性與ObservableArray對象綁定在一起。

     那麼問題來了:Android點擊Back鍵再重新進入頁面的時候,由於NativeScript不會像Android源生一樣點擊Back鍵就殺掉當前的Activity(頁面),所以當重新進入頁面時,系統會調用onPageLoaded方法,並累加ObservableArray的值,並刷新列表。列表的行數加倍。。。

     解決:把ObservableArray的初始化放到onPageLoaded外。

問題3:

     場景:ListView在iOS無法取消重用機制

     解決:尚未解決

4.     Location

問題1:需要手動獲取允許定位的權限。

 

5.html解析中文JSON亂碼,js方法失效。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章