Nativescript学习遇到的一些问题

来源:互联网 发布:淘宝联盟——我的舞台 编辑:程序博客网 时间:2024/06/06 06:45

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方法失效。

0 0
原创粉丝点击