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就可顯示效果。
問題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方法失效。