一直从事后端开发,对于前端的html+css+js,不熟不熟的。前面写了一个比较复杂的操作界面,我只能说,误工费时。花了一周研究avalonjs2,大神的确就是大神,解决了我很多的问题,

请参考http://www.cnblogs.com/rubylouvre

记录初试结果

 <!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>我的SPA是没有#hash变化的</title>
<meta charset="utf-8" />
<meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no" />
<link rel="stylesheet" href="weui/weui.min.css" />
<link rel="stylesheet" href="weui/weui2.css" />
<link rel="stylesheet" href="weui/czh.css" />
<meta name="format-detection" content="telephone=no" />
<link rel="stylesheet" href="ratchet/dist/css/ratchet.min.css" />
<link type="text/css" rel="stylesheet" href="css/fontstyle.css" />
<link type="text/css" rel="stylesheet" href="css/yjscanpage1.css" />
<link href="layer.m/need/layer.css" type="text/css" rel="stylesheet" />
<script src="../wx/layer.m/layer.m.min.js"></script>
<script src="avalon/avalon.modern.js"></script>
<style>
.ms-controller {
display: none;
}
</style>
<script>
avalon.component('ms-pager',{
template: '<div><a href="#/ms-header">ms-header</a><input type="text" ms-duplex-number="@num"/><button ms-on-click="@onPlus">+++</button></div>',
defaults:{
num:1,
onPlus:function(){
this.num++;
}
}
}); avalon.component('ms-button', {
template: '<div ms-visible="@toggle"><button type="button" ms-click="@toggle = !@toggle"><span><slot name="buttonText"></slot></span></button></div>',
defaults: {
buttonText: "button"
},
soleSlot: 'buttonText',
toggle:true
}); var tpl = '<div><a href="#/ms-pager">ms-pager</a><h4>{{@title}}</h4><h5>{{@random}}</h5><button ms-on-click="@onChangeTitle">点击改变title</button><button ms-on-click="@onRandom">获取随机数</button></div>';
avalon.component('ms-header',{
template:tpl,
defaults:{
title:"这是标题",
random:0,
onChangeTitle:function(){
this.title = '改变了title' + (new Date - 0);
},
onRandom:function(){
this.random = Math.floor(Math.random()*100)
}
}
}); var vm = avalon.define({
$id:'test',
tpl: '<div><a href="#/ms-header">ms-header</a></div>',
button: {//注意这里不能以 $开头
buttonText: "按钮内容"
},
dialogtpls:[],
opendialog: function (hash) {
vm.dialogtpls.push('<div><' + hash + ' ms-widget=\"{$id:"' + hash + '",cached: true}\"></' + hash + '></div>');//dialog样式
//var s = layer.open({
// content: vm.$element.querySelector(".showdialg div").innerHTML,
// style: 'background-color:#09C1FF; color:#fff; border:none;height:20px;'//,
// //time: 2
//}); },
showpage: function (hash) {
vm.tpl = '<div><' + hash + ' ms-widget=\"{$id:"' + hash + '",cached: true}\"></' + hash + '></div>';
},
closedialog: function () {
vm.dialogtpls.pop();// = '';
}
})
window.addEventListener('hashchange', function (e) {
var hash = e.newURL.split('#/')[1];
if (hash.indexOf("dialog") >= 0) {
}
else {
vm.tpl = '<div><' + hash + ' ms-widget=\"{$id:"' + hash + '",cached: true}\"></' + hash + '></div>';
}
});
</script>
</head>
<body ms-controller="test" style="position:relative">
<ul>
<li><a ms-click="@showpage('ms-header')">ms-header</a></li>
<li><a ms-click="@showpage('ms-pager')">ms-pager</a></li>
<li><a ms-click="@opendialog('ms-pager')">ms-dialog</a></li>
<li><a ms-click="@opendialog('ms-header')">ms-header</a></li>
<li><a ms-click="@closedialog('ms-pager')">ms-dialog</a></li>
</ul>
<div style="background-color:#f0f0f0;" ms-html="@tpl"> </div>
<div class="showdialg">
<div ms-for="el in @dialogtpls" ms-html="el"></div>
</div>
</body>
</html>

我这里使用的spa跟常规不一样,没有url#xxxx这种方式,

所想要的效果,就是业务配u1,u2,u3,设计调用方式之后,要用modal显示的,就modal显示,可以叠放,

或者是一般的替换u显示。这里的dialogtpls数组用于显示modal的,没有加modal样式和代码。

试用avalon2.0的更多相关文章

  1. iOS开发之AFNetworking 3.0.4使用

    昨天使用Cocoapods导入AFN做POST的时候,导入的最新版的3.0.4,突然发现找不到AFHTTPRequestOperationManager了...上github上一看,发现没有这个了.刚 ...

  2. Hbase1.0 客户端api

    最近在试用Hbase1.0的客户端API,发觉变化还是挺大(以前版本也不熟).到处都是deprecated. 现在应该是这样子: Configuration  conf = HBaseConfigur ...

  3. iOS开发之AFNetworking 3.0.4使用-OC

      GET请求 AFHTTPSessionManager *manager = [AFHTTPSessionManager manager]; [manager GET:URL parameters: ...

  4. avalon2对比avalon1 新增的功能汇总

    avalon2.0 与1.4,1.5相比, 2.0是移除了ms-repeat, ms-each, ms-with, ms-include, ms-include-src,ms-data, ms-sca ...

  5. uniGUI出新版本了,0.97.0.1081

    uniGUI出新版本了,0.97.0.1081,试用版0.97.0.1075,支持Delphi2006~XE7.下载地址是: http://www.unigui.com/downloads 已在XE6 ...

  6. avalon2学习教程08插入移除操作

    本节介绍的ms-if指令与ms-visible很相似,都是让某元素"看不见",不同的是ms-visible是通过CSS实现,ms-if是通过移除插入节点实现. ms-if的用法与1 ...

  7. centos8平台:举例讲解redis6的ACL功能(redis6.0.1)

    一,为什么redis6要增加acl功能模块? 什么是acl? 访问控制列表(ACL)是一种基于包过滤的访问控制技术, 它可以根据设定的条件对接口上的数据包进行过滤,允许其通过或丢弃 redis6增加了 ...

  8. knockoutjs扩展与使用

    原来考虑使用avalon2.0 经过一周的试验,能力不够,用不起来.最终使用了knockout-3.4.js <!DOCTYPE html> <html> <head&g ...

  9. avalon学习笔记

    背景: 刚刚到一家新的公司,我新接手的项目采用的mvvm框架是avalon,当然我以前没有学过angular,但是用过react,所以对于这类框架应该不算陌生.但毕竟是一个新的框架,所以还是先学起来, ...

随机推荐

  1. ajax简单应用

    var xmlhttp;if (window.XMLHttpRequest) { // IE7+, Firefox, Chrome, Opera, Safari 浏览器执行代码 xmlhttp=new ...

  2. Android手机刷recovery

    以前觉得android刷机是件很麻烦的事,现在倒不觉得了.  只要手机刷入第三方的recovery,一切都好办了,无论是root还是刷google play.  recovery开源的有两大阵营,tw ...

  3. Google Code Jam 2016 Round 1B B

    题意:给出两个数字位数相同,分别中间有若干位不知道,用问号表示.现在要求补全这两个数字,使得差值的绝对值最小,多解则取第一个数字的值最小的,再多解就取第二个数字最小的. 分析: 类似数位dp,但是很多 ...

  4. XML 基础

    linux下xml编辑器 vim gedit editix wonderful;免费30天;可以进行有效性检查 xerces oxygen 收费 xmlcopyedit serna free 是ser ...

  5. ecshop不同文章分类调用不同文章分类模板

    根据需要,不同的文章分类会有不一样的页面风格.也就是说根据文章分类ID来判断,输出不同的文章分类模板. 重点就是文章分类的ID. 打开:article_cat.php $smarty->disp ...

  6. js将多个方法添加到window对象上的多种方法

    方法一:(最简单也是最笨的方法) window.a = function(){}window.b = function(){}window.c = function(){} 方法二:(利用jq的ext ...

  7. PHPCMS v9 安全防范教程

    一.目录权限设置很重要:可以有效防范黑客上传木马文件.如果通过 chmod 644 * -R 的话,php文件就没有权限访问了.如果通过chmod 755 * -R 的话,php文件的权限就高了. 所 ...

  8. iOS设计 - 一款APP从设计稿到切图过程概述

    这篇文章站在GUI设计师的角度概述了APP从项目启动到切片输出的过程,相当于工作流程的介绍.这里写的不是一种规范,只是一种工作方法,加上技术的更新是非常快的,大家在具体工作中,一定要灵活运用. 这里我 ...

  9. ***PHP 数组排序 +php二维数组排序方法(PHP比较器)

    PHP - 一维数组的排序函数 在本节中,我们将学习如下 PHP 数组排序函数: sort() - 以升序对数组排序 rsort() - 以降序对数组排序 asort() - 根据值,以升序对关联数组 ...

  10. 使用pyInstaller发布PathMerge的exe版本(py转换成exe)

    前言 PathMerge是用python写的一个辅助文件夹合并的小工具,它的特点是不用担心合并后文件会丢失,旧文件会创建副本保存下来,除非你手动删除. 详情见:python开发目录合并小工具 Path ...