随着avalon的普及,越来越多人加入avalon的大家庭。随之而来的是各种问题。本文在这里统一解答一下。

使用avalon基本上有几个方针要坚持

  • 数据必须先定义后使用,只能VM中定义,不能V中定义。
  • 数据必须先打扁后使用,比如对象的层次不宜太深,数组不能太长。
  • 页面上不使用太复杂的逻辑,需要的话请封装成函数,也方便自己或后人维护调试。
  • IE下方法名,属性名注意不区分大小写(因为是VBS)。
  • IE下方法中的this不一定指向自身。
  • avalon在domReady时自己执行了一次scan,对于后插入的DOM结构,需要自己手动scan。

SCRIPT1028: 缺少标识符、字符串或数字

这只发生于IE6-7,它不支持对象最后一个键值对后面添加逗号,如

 vm.$bOpts = {
header: "提示信息title",
content: "提示信息content",
}

SCRIPT1041: 名称重定义

这是avalon在IE6-8使用VBScript对象创建VM对象引起的,VB对象不支持为对象添加两个相同的属性名


avalon.define("test", function(vm){
vm.aaa = 1
avalon.mix(vm, {
aaa: 2, //这里出问题了
bbb: 3
})
})

此外,由于VBScript变量名不区分大小写


vm.user = {username: 'lili', userName: 'lilililili'}

这样也会报名称重定义 Error!

异步重写空对象出错

这是用法问题

<!DOCTYPE html>
<html>
<head>
<title>TODO supply a title</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width">
<script src="avalon.js" type="text/javascript"></script>
<script>
var model = avalon.define("test", function(vm) {
vm.data = {}
})
setTimeout(function() {
var data = {
a: 1,
b: 2,
c: 3
}
model.data = data //这样正常
// avalon.mix(model.data, data) //这样会报错
}, 1000)
</script>
<style>
#aaa{
width: 100%;
height:200px;
background:green;
}
</style>
</head>
<body ms-controller="test">
<input ms-duplex="data.a"/>
</body>
</html>

事件回调的this对象$model, $vmodels不见了的问题

1.3.5已经废掉, 源码搜data.param.replace(/-\d+$/, "") ,加上这几行

try{
elem.$vmodel = vmodels[0]
elem.$vmodels = vmodels
}catch(e){}

或者通过ms-click=callback(avalon.vmodels.xxx)传入你的$vmodel

放在button标签的事件点击没有生效

button标签默认会提交页面,产生跳转,因此需要指定type="button",即<buttton type=button ms-click=check >

显示隐藏切换失败

<div class="inp,inte" ms-visible="integralCount > 0 && intergralCount > maxIntegral + spendIntegral" >
已超出可使用积分({{maxIntegral/100}}元),请重新输入
<div>

原因,不要在视图的指令里面写&& , ||, 请封装为函数

<div class="inp,inte" ms-visible="isVisible(integralCount, maxIntegral ,spendIntegral)" >
已超出可使用积分({{maxIntegral/100}}元),请重新输入
<div>

交互数组中两个元素的位置失败

原因,只能通过数组方法,比如splice进行移出插入操作

<!DOCTYPE html>
<html lang="zh-cn">
<head>
<title>
Avalon splice issue
</title>
<meta charset="utf-8">
</head>
<body>
<ul ms-controller="test">
<li ms-repeat="items">{{ el.name }}</li>
</ul>
<script src="avalon.js"></script>
<script>
var test = avalon.define('test', function(vm) {
vm.items = [
{
name: 'First lady'
},
{
name: 'Second boy'
},
{
name: 'Third guy'
}
];
}); var temp = test.items.splice(2, 1);
test.items.splice(1, 0, temp[0].$model);//如果是简单数据类型,就不需要.$model
</script>
</body>
</html>

IE6-8下报window.execScript 这一行错误

可能是你的VM上定义了一个很大的数组引发的

vm.err大IE6-8下报错

type, err, erm, me是VBScript关键字

ms-controller="aaa",aaa这个VM只能应用一个元素上,页面上不能 出现一个VM同时应用于两个元素

低版本IE使用VBScript,不支持未婚先孕!

如有更多问题,请统一在这里提 https://github.com/RubyLouvre/avalon/issues/509

avalon的常见问题的更多相关文章

  1. 迷你MVVM框架avalon在兼容旧式IE做的努力

    很多时候,写代码就像砌砖头,只要我们不关心盖楼的原因.建筑的原理.土木工程基础和工程经验,就算我们砌了100栋高楼,我们也就只是一个砌砖工人,永远也成为不了一个工程师,更别说建筑师了.而那些包工头也只 ...

  2. MVVM框架avalon在兼容旧式IE

    迷你MVVM框架avalon在兼容旧式IE做的努力 当前标签: avalon 共3页: 1 2 3 下一页  迷你MVVM框架avalon在兼容旧式IE做的努力 司徒正美 2014-03-13 11: ...

  3. 【小梅哥SOPC学习笔记】SOPC开发常见问题及解决办法集锦

    SOPC开发常见问题及解决办法集锦 一.Symbol 'NULL' could not be resolved 近期在评估使用NIOS II处理器进行项目的开发,我使用的软件是Quartus II 1 ...

  4. C++常见笔试面试要点以及常见问题

    1. C++常见笔试面试要点: C++语言相关: (1) 虚函数(多态)的内部实现 (2) 智能指针用过哪些?shared_ptr和unique_ptr用的时候需要注意什么?shared_ptr的实现 ...

  5. SQL Server常见问题介绍及快速解决建议

    前言 本文旨在帮助SQL Server数据库的使用人员了解常见的问题,及快速解决这些问题.这些问题是数据库的常规管理问题,对于很多对数据库没有深入了解的朋友提供一个大概的常见问题框架. 下面一些问题是 ...

  6. 【腾讯优测干货分享】如何降低App的待机内存(二)——规范测试流程及常见问题

    本文来自于腾讯优测公众号(wxutest),未经作者同意,请勿转载,原文地址:https://mp.weixin.qq.com/s/806TiugiSJvFI7fH6eVA5w 作者:腾讯TMQ专项测 ...

  7. MVVM大比拼之avalon.js源码精析

    简介 avalon是国内 司徒正美 写的MVVM框架,相比同类框架它的特点是: 使用 observe 模式,性能高. 将原始对象用object.defineProperty重写,不需要用户像用knoc ...

  8. mysql数据库开发常见问题及优化

    mysql 数据库是被广泛应用的关系型数据库,其体积小.支持多处理器.开源并免费的特性使其在 Internet 中小型网站中的使用率尤其高.在使用 mysql 的过程中不规范的 SQL 编写.非最优的 ...

  9. MVC、MVP、MVVM、Angular.js、Knockout.js、Backbone.js、React.js、Ember.js、Avalon.js、Vue.js 概念摘录

    注:文章内容都是摘录性文字,自己阅读的一些笔记,方便日后查看. MVC MVC(Model-View-Controller),M 是指业务模型,V 是指用户界面,C 则是控制器,使用 MVC 的目的是 ...

随机推荐

  1. yii2 笔记(1)

    1.js文件加载顺序问题 在视图中引用js文件的时候,使用到jquery会报错,因为自定义的js文件在jquery之前被引入了. 由于jquery,bootstrap是在AppAsset中全局引入的, ...

  2. postman环境变量的设置

    相同的api接口因为部署环境不同,分为test和fromal 不仅重复,还容易出错 下面来介绍一下Postman的一个小技巧来解决这种问题: 设置环境变量 Tips: 不是在OS中设置环境变量哦   ...

  3. golang 如何判断变量的类型

    本文介绍两种用于判断变量类型的方式. 方法一 package main import ( "fmt" ) func main() { v1 := "123456" ...

  4. Hadoop文件系统支持释疑之S3

    一.引言 Hadoop版本提供了对多种文件系统的支持,但是这些文件系统是以何种方式实现的,其实现原理是什么以前并没有深究过.今天正好有人咨询我这个问题:Hadoop对S3的支持原理是什么?特此总结一下 ...

  5. 大数据应用之HBase数据插入性能优化实测教程

    引言: 大家在使用HBase的过程中,总是面临性能优化的问题,本文从HBase客户端参数设置的角度,研究HBase客户端数据批量插入性能优化的问题.事实胜于雄辩,数据比理论更有说服力,基于此,作者设计 ...

  6. HSSF NPOI 颜色

    using System; using System.IO; using System.Windows.Forms; using NPOI.HSSF.UserModel; using NPOI.SS. ...

  7. Linux Shell脚本编程--Linux特殊符号大全

    Linux Shell脚本编程--Linux特殊符号大全 linux_shell 特殊符号的介绍 2011

  8. jQuery的get()用法

    这个方法主要是将jQuery对象或者jQuery对象集合转换成DOM对象或dom对象集合. get()方法中如果传递参数,表示将具体位置的jQuery对象转换成dom对象.如果没有参数,则表示返回所有 ...

  9. 在配置静态IP的时候遇到 :bringing up interface eth0 : error unknown connection

    首先这是动态ip配置成功的结果 接下来切换到root用户来配置静态的 按照静态ip的配置方法配置好文件后(具体过程这里就不多加说明) 然后保存退出 当我们重启网卡的时候问题来了(因为本人有点强迫症,多 ...

  10. mysql 分片

    MySQL Fabric(分片)  是一个用于管理 MySQL 服务器群的可扩展框架.该框架实现了两个特性 — 高可用性 (HA ) 以及使用数据分片的横向扩展.这两个特性既可以单独使用,也可以结合使 ...