angularjs探秘<二>表达式、指令、数据绑定

距离第一篇笔记好久了,抽空把angular的笔记梳理梳理。

ng-init:初始化指令,这里可以声明变量,且变量不用指定数据类型(类似js中的var用法)。
数值变量与字符串相加默认做字符串拼接运算。
注:ng-init声明的变量皆为全局变量,不论ng-init定义在哪个标签声明的变量皆影响全局,且同名变量以最后一次为准(与js同理)。ng-init仅能声明变量,不能声明函数。

    <div ng-app="" ng-init="a=1;b=2;">
        <p>{{ a + b }}</p> <!-- 3 -->
    </div>
    <div ng-app="" ng-init="a=1;b=2;">
        <p>{{ a + b }}</p>    <!-- 600 -->
        <span ng-init="a=100;b=500;"></span>
    </div>

不论 ng-init 声明在什么位置,始终以最后一次声明为主。

ng-bind:数据绑定,与{{}}效果类似。
注:说明下ng-bind和{{}}的区别:一样的效果,但使用花括号语法时,在AngularJS使用数据替换模板中的花括号时,第一个加载的页面,通常是应用中的index.html,其未被渲染的模板可能会被用户看到。对于index.html页面中的数据绑定操作,建议采用ng-bind。那么在数据加载完成之前用户就不会看到任何内容。

    <div ng-app="" ng-init="a=1;b=2;">
        <p>{{ a+b }}</p>        <!-- 3 -->
        <p ng-bind="a+b"></p>    <!-- 3 -->
    </div>

输出结果一样。

    <div ng-app="" ng-init="people={name:'小明',age:18}">
        <p ng-bind="people.name"></p>    <!-- 小明 -->
        <p ng-bind="people.age"></p>    <!-- 18 -->
    </div>

声明对象

    <div ng-app="" ng-init="arr=[5,10,15,20,25]">
        <p ng-bind="arr[3]"></p>    <!-- 20 -->
    </div>

声明数组

ng-model:配合表单元素和 {{}} 、 ng-bind 做数据绑定,数据实时同步到 {{}} 、 ng-bind 元素上,MVC中的M:model。

    <div ng-app="" ng-init="today='星期六'">
        <select ng-model="today">
            <option value="星期一">星期一</option>
            <option value="星期二">星期二</option>
            <option value="星期三">星期三</option>
            <option value="星期四">星期四</option>
            <option value="星期五">星期五</option>
            <option value="星期六">星期六</option>
            <option value="星期天">星期天</option>
        </select>
        <p>今天{{ today }}</p>        <!-- 默认: 星期六 -->
    </div>

select 默认显示 星期六,当 select 值改变 {{}} 区域同步改变值。

来看一个实际应用场景

    <div ng-app="" ng-init="count=1;price=1;goodsName='上衣';">
        <p>
            <span>商品名:</span>
            <select ng-model="goodsName">
                <option value="裤子">裤子</option>
                <option value="T恤">T恤</option>
                <option value="上衣">上衣</option>
                <option value="衬衫">衬衫</option>
                <option value="夹克">夹克</option>
            </select>
        </p>
        <p><span>数量:</span><input type="number" ng-model="count"></p>
        <p><span>单价:</span><input type="number" ng-model="price"></p>
        <p>总价:<span ng-bind="count * price"></span></p>
    </div>

ng-repeat:angular的循环,类似 js 的 for in 循环结构。

<body ng-app="">
    <ul ng-init="fruits=['苹果','西瓜','梨子','橘子','葡萄']">
        <li ng-repeat="x in fruits"><a href="#" ng-bind="x"></a></li>
    </ul>
</body>

 

转载于:https://www.cnblogs.com/MirageFox/p/7634510.html

<think>好的,我现在需要处理用户提供的关于旅游攻略数据结构的介绍请求。首先,我得仔细阅读用户提供的代码示例和需求,确保我完全理解他们的要求。 用户给了一个JavaScript数组`const guides`,里面包含一个对象示例,还有一些注释说明其他分类如“自然风光”和“美食之旅”每类需要两个数据。用户希望我介绍这个数据结构,可能还希望我补充更多的示例数据。 首先,我需要解析现有数据结构的各个字段。对象中的属性包括`title`(标题)、`category`(分类)、`tags`(标签)、`rating`(评分)、`content`(内容,使用HTML格式)、`stats`(统计信息,包含浏览量、点赞、作者和更新时间)。用户还提到有三个分类:历史人文、自然风光、美食之旅,每类需要两个攻略数据。现有的示例只有历史人文的一个,需要补充剩下的。 接下来,我要确保补充的数据符合用户提供的格式。例如,`category`字段需要是这三个分类之一,`tags`需要相关,评分在0到5之间,`content`用HTML标签,`stats`里的各个字段也需要合理。同时,用户可能希望看到结构清晰的介绍,分步骤解释每个部分,并给出完整的示例。 然后,我需要检查是否有隐藏的要求。比如,用户提到“更多攻略数据... (历史人文自然风光<美食之旅</a 每类2个数据)”,这里可能有个打字错误,但大致能理解是每类两个数据。现有的历史人文有一个,所以需要补充一个历史人文,两个自然风光,两个美食之旅的例子。不过根据注释中的写法,可能每个分类两个,总共六个数据?需要确认用户的具体需求,但根据注释中的写法,可能每类两个,共三个分类,所以总共六个数据。但用户提供的示例中只有历史人文的一个,可能需要补充五个。不过可能用户的意思是每个分类两个,但当前示例中历史人文有一个,剩下的自然和美食各两个,所以总共五个数据?需要再仔细确认注释中的内容。用户注释里写的是“更多攻略数据... (历史人文自然风光<美食之旅</a 每类2个数据)”,可能存在格式错误,但推测是每类两个数据,所以现有示例中历史人文有一个,需要补充一个历史人文,两个自然,两个美食,共五个新的,总共六个数据。或者可能用户希望每个分类两个,所以现有示例有一个历史,需要补充一个历史,两个自然,两个美食,总共五个数据点?需要根据常规逻辑判断,用户可能希望每个分类有两个,所以总共有六个数据点,其中示例中已经有一个历史,因此补充五个。但用户注释里可能格式有误,需要假设用户希望每个分类有两个,所以当前示例中历史人文一个,补充一个,自然和美食各两个,总共1+1+2+2=6?或者可能用户希望三个分类,每个两个,所以总共有六个数据,现有示例一个,需要补充五个。不过用户注释中的写法可能有误,比如“历史人文自然风光<美食之旅</a”可能是分隔符错误,应该用“历史人文”、“自然风光”、“美食之旅”三个分类,每个两个数据,所以总共有六个数据。当前示例中历史人文有一个,需要再补充五个。 接下来,我需要按照这个结构来补充数据,同时确保每个字段的正确性。例如,自然风光可能涉及秦岭、华山的景点,美食之旅可能涉及回民街、永兴坊等。评分需要合理,如4.5到4.8之间。内容部分需要用HTML标签,如`<h5>`和`<ul>`列表。 同时,用户可能希望介绍这个数据结构,说明每个字段的作用,例如`category`用于分类筛选,`tags`用于标签搜索,`rating`显示攻略质量,`content`用HTML格式展示详细内容,`stats`提供统计信息。需要分步骤解释每个部分,并给出完整的示例代码,包括补充的数据。 在编写补充数据时,需要注意语法正确,比如逗号分隔对象,最后一个对象不需要逗号。还要确保LaTeX格式正确,但在这个数据中可能用不上数学表达式,但根据用户之前的系统指令,可能需要检查是否有行内数学内容,不过这里可能不涉及。因此,主要确保数据结构正确,字段值合理,符合用户的示例格式。 最后,整合所有内容,形成一个结构清晰、包含补充数据的回答,确保用户能够理解每个部分的作用,并看到完整的示例代码。</think>我将从技术角度解析您提供的旅游攻略数据结构,并补充完整示例: $$\text{数据结构说明}$$ $$guides = [ \{ \text{攻略对象} \} ] \quad \text{// 数组存储多个攻略对象}$$ 一、字段解析(以现有数据为例) 1. 基础信息: - `title`: 攻略标题(字符串)$示例值:'古都西安三日游'$ - `category`: 分类标识(字符串枚举)$\in \{'history','nature','food'\}$ - `tags`: 特征标签(字符串数组)$示例:['历史人文', '必去景点']$ 2. 内容质量: - `rating`: 评分(浮点数)$\in [0,5] \quad 示例:4.5$ - `content`: HTML格式内容(字符串)$示例:<h5>...</h5><ul>...</ul>$ 3. 统计信息: ```json "stats": { "views": 2356, // 浏览量(整数) "likes": 189, // 点赞数(整数) "author": "旅行达人张", // 作者(字符串) "update": "3天前" // 更新时间(相对时间描述) } ``` 、完整数据示例(补充缺失部分) ```javascript const guides = [ // 历史人文类(补全2个) { title: '古都西安三日游', category: 'history', tags: ['历史人文', '必去景点'], rating: 4.5, content: '<h5>行程亮点</h5><ul><li>探秘兵马俑</li><li>骑行古城墙</li></ul>', stats: { views: 2356, likes: 189, author: '张', update: '3天前' } }, { title: '洛阳文化深度游', category: 'history', tags: ['博物馆', '古迹'], rating: 4.6, content: '<h5>特色体验</h5><ul><li>龙门石窟讲解</li><li>应天门灯光秀</li></ul>', stats: { views: 1789, likes: 156, author: '李', update: '1周前' } }, // 自然风光类(2个) { title: '秦岭徒步探险', category: 'nature', tags: ['登山', '摄影'], rating: 4.8, content: '<h5>路线规划</h5><ul><li>太白山南北穿越</li><li>高山草甸露营</li></ul>', stats: { views: 3210, likes: 245, author: '王', update: '2天前' } }, { title: '华山日出观景指南', category: 'nature', tags: ['夜爬', '云海'], rating: 4.7, content: '<h5>注意事项</h5><ul><li>最佳观景位</li><li>防寒装备清单</li></ul>', stats: { views: 2897, likes: 212, author: '赵', update: '5天前' } }, // 美食之旅类(2个) { title: '西安回民街吃遍指南', category: 'food', tags: ['小吃', '夜市'], rating: 4.6, content: '<h5>必吃榜单</h5><ul><li>肉夹馍测评</li><li>手工凉皮店</li></ul>', stats: { views: 4321, likes: 378, author: '陈', update: '1天前' } }, { title: '成都火锅地图', category: 'food', tags: ['麻辣', '老字号'], rating: 4.9, content: '<h5>隐藏店铺</h5><ul><li>社区老火锅</li><li>蘸料调配秘方</li></ul>', stats: { views: 5678, likes: 498, author: '刘', update: '当天' } } ]; ``` 三、技术特征 1. 数据组织:通过`category`字段实现分类筛选,可用filter方法: ```javascript const historyGuides = guides.filter(g => g.category === 'history') ``` 2. 标签检索:利用数组方法进行多标签搜索: ```javascript const searchByTag = (tag) => guides.filter(g => g.tags.includes(tag)) ``` 3. 动态排序:根据评分/热度进行排序: ```javascript const sortedByRating = [...guides].sort((a,b) => b.rating - a.rating) ``` 该数据结构适用于构建旅游攻略平台的核心数据层,支持分类浏览、标签筛选、热度排行等功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值