MVVM常见问题

1、MVVM学习文档有哪些?

解决方式

appcan.js使用到的js框架:zepto.js 参考文档: http://www.css88.com/doc/zeptojs_api/underscore.js 参考文档: http://www.css88.com/doc/underscore/backbone.js 参考文档: http://www.css88.com/doc/backbone/backbone-nested.js 参考文档: https://github.com/afeld/backbone-nestedepoxy.js 参考文档: http://epoxyjs.org/

2、向一个控件中添加子控件时,要注意什么?

解决方式

要使其父级获取焦点

3、使用MVVM模型时,数据绑不上?

解决方式

1)如果存在mvvm-scope,位置可能写的不对2)可能是没有在Model或者collection中初始化绑定的参数。defaults:{}一般情况出现在Model中 defaults中初始化要有相应的字段,如:defaults:{"typeName":"","typeId":""}注意:如果没有使用设计器自动生成代码,而是使用自己编写的代码时,可能会因为某些属性写的位置的问题 导致页面不能显示数据,建议使用设计器来生成代码。

4、 如何制作一个抽屉页面?

解决方式

需要在page中分别添加header,page0,page1,其中header、page0、page1这三个控件在同一级目录Page0中书写抽屉内容,设置其大小:宽100%,定位方式:fixed,位置:0,0Page1中书写主页面内容

5、 让列表展示成一行有多列的形式如何构建

解决方式

一行有两列:使用ul控件 再在ul控件中添加正方形盒子控件,选择属性中的双向列表。

  1. [data-control="CUSTOMLISTVIEW"].col2 li {
  2. width: 49%;
  3. margin-right: 0.5%;
  4. float: left;
  5. position: relative;
  6. }

一行有3列:使用ul控件再在ul控件中添加正方形盒子控件,选择属性中的双向列表,导出后添加col3的样式。

  1. [data-control="CUSTOMLISTVIEW"].col3 li {
  2. width: 33%;
  3. margin-right: 0.3%;
  4. float: left;
  5. position: relative;
  6. }

要注意的是 一行的列数乘以宽度再加上margin值不要超过100%。

6、如何在MVVM中书写点击按钮触发事件?

解决方式
  1. var ViewModel = new(MVVM.ViewModel.extend({
  2. el: "body",
  3. initialize: function() {
  4. this.collection.fetch({})
  5. return;
  6. },
  7. collection: Collection,
  8. events:{
  9. 'tap #Button':'delBook'
  10. },
  11. delBook:function(){
  12. alert('hello')
  13. }
  14. }))();

7、假如页面中有多个pane,每个pane下对应一个slider,切换tab标签slider不显示怎么办?

解决方式

问题原因:当切换slider时,因为初始化加载slider时其他pane默认display:none,此时获取不到slider的宽高,因此无法显示slider。解决方案:切换tab标签时,先给当前显示的标签display:block后再初始化slider就可显示。解决代码:

  1. tabview_Tab_m7gnm8.on('click',function(obj,index){
  2. $('.tab_pane').removeClass('active');
  3. $($('.tab_pane')[index]).addClass('active');
  4. slider($($('.tab_pane')[index]).find('.slider').attr('id'))
  5. })
  6. function slider(id) {
  7. var slider_Slider_DdVcfM = appcan.slider({
  8. selector: $("#"+id),
  9. aspectRatio: 0.38 || 6 / 16,
  10. hasLabel: true,
  11. index: 0
  12. });
  13. slider_Slider_DdVcfM.set([{
  14. "img": "http://newdocx.appcan.cn/docximg/IDE_loading1.png",
  15. "label": "图片"
  16. },
  17. {
  18. "img": "http://newdocx.appcan.cn/docximg/IDE_loading2.png",
  19. "label": "图片"
  20. },
  21. {
  22. "img": "http://newdocx.appcan.cn/docximg/IDE_loading3.png",
  23. "label": "图片"
  24. },
  25. {
  26. "img": "http://newdocx.appcan.cn/docximg/IDE_loading4.png",
  27. "label": "图片"
  28. }]);
  29. slider_Slider_DdVcfM.on("clickItem",
  30. function(index, data) {});
  31. }

8、页面样式问题

解决方式

ContentFlexVer的padding-top值不能加在当前标签,要加到它的子标签上,不然会出现滚动条。

9、tabview和多个pane存在,当切换tab时如何让对应的pane加载新的数据?

解决方式

当切换tab时,需使用fetch重新获取接口数据。例:ViewModel.collection.fetch({})

10、列表中获取用户点击的是第几条数据?

解决方式
  1. itemEvents: {
  2. "tap #Box": function(ev, param) {
  3. var index = _.indexOf(_.pluck(Collection.models, 'id'),this.model.get("id"));
  4. alert("它点击我了" + index);
  5. },
  6. }

以上信息是否解决您的问题?

免费注册,快速体验