模仿angularjs写了一个简单的HTML模版和js数据填充的示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
<!DOCTYPE html>
 
<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta charset="utf-8" />
    <title></title>
    <script language="javascript" type="text/javascript" src="jquery-1.11.1.min.js"></script>
    <script language="javascript" type="text/javascript">       
        //框架代码
        $(function () {
            $("[up-ctl]").each(function (i, item) {
                var parent = $(this);
                var ctl = parent.attr("up-ctl");
                var tar = window[ctl]();//执行用户的ctl方法
                //parent.data("_data", tar);//以后可能会用到
 
                var str = parent.html().replace(/##(.+?)##/g, function (e1, e2) {
                    var res = tar[e2];
                    if (res == undefined || res == null) {
                        return e1;
                    } else {
                        return res;
                    }
                });
                parent.html(str);
 
                parent.find("[up-repeat]").each(function (i, item) {
                    var repeat = $(this);
                    var itemAttr = repeat.attr("up-repeat");
                    for (var i = 0; i < tar[itemAttr].length; i++) {
                        var repeatStr = repeat.html().replace(/{{(.+?)}}/g, function (e1, e2) {
                            var res = tar[itemAttr][i][e2];
                            if (res == undefined || res == null) {
                                return e1;
                            } else {
                                return res;
                            }
                        });
                        repeat.after(repeatStr);
                    }
                    repeat.remove();
                });
            })
        });
    </script>
    <script>
        //用户代码
        function ctl1() {
            var obj = {};
            obj.title = "这是一个对象";
            obj.items = [];
            for (var i = 0; i < 20; i++) {
                var item = {};
                item.title = "第" + i + "个";
                item.index = i;
                obj.items.push(item);
            }
            return obj;
        }
    </script>
</head>
<body>
    <div up-ctl="ctl1">
        <h1>##title##</h1>
        <ul>
            <li up-repeat="items">
                {{index}}:{{title}}<br />
            </li>
        </ul>
    </div>
</body>
</html>

  

posted @   liulun  阅读(2404)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
点击右上角即可分享
微信分享提示