在使用ionic的Tab中,为什么获得不到变化后的input框的数据
发布于 1年前 作者 letterpg 995 次浏览 来自 问答

屏幕快照 2015-09-24 9.23.37 AM.png

如上图,一个ionic的tab中包含两个input框(值为ab和cd),一个按钮。当点击按钮时,触发事件希望获取input框中的最新值。 现在的问题是在controller里获得的都是初始值,获得不到最新值。我实验了不使用ionic tab就好用,使用了就不好用,求教这是为什么,有别的解决方案吗,谢谢

3 回复

提问的时候应该贴上代码,这样别人才可以快速看出错误原因。

从你的描述上来说,最有可能的情况就是 scope 出现了断层,什么意思: 我们知道子 scope 可以继承 父层 Scope 的所有属性和 function, 但是当子 scope 改变来自父层的值时,原始类型的数据无法更新到父层。 具体看:https://github.com/angular/angular.js/wiki/Understanding-Scopes#angular-scope-inheritance

简单点说,你 input 里面的 ng-model 绑定的变量,给它包裹一层: 比如你原来是这样的 <input ng-model="a"> 现在改成这样 <inpit ng-model="data.a"> a -> data.a

Angular / Ionic 内有不少的地方会创建子 scope ,比如 ng-include / ng-if / ionicPopup / ionicTab / ionicModal 等等,这些组建创建的 View 会有属于自己的 Scope ,而这个 scope 则是你定义的 controller 的那个 scope 的子 scope ,这就导致子 scope 内的值变化的时候,原是类型的数据无法传递到父层,也就是你自己定义的 scope 那层去。

以上。 (可能需要有一定的基础,但建议看完上面那个官方的文档)

十分感谢,完美的解决了问题。 (没贴代码是因为程序文件较多,又路由又tab view的,怕说不明白,更乱:))

@letterpg 解决了就好:)

回到顶部