认认真真学习Vue,从我做起。🦾 2021-08-23 学习 暂无评论 ## v-bind和v-model > v-bind使用在标签上 绑定标签的属性 title、href之类 缩写 ```vue ``` > v-model使用在表单上双向绑定 ``` html ``` ## v-if > 控制表现显示状态 true和false ## v-on和v-once > v-on给标签绑定事件 `v-on:click="handleMessage"` handleMessage写在method中 v-once让数据只渲染一次 ## v-for > 循环当前标签,根据数组来 ```html {{item.text}} ``` ## 基本结构 html 部分 ```html Counter: {{counter}} Message:{{message}} {{innerText}} 反转 {{item.text}} ``` js部分 ``` javascript const Count = { //数据 data() { return { counter: 0, message: "hello vue!", innerText: "", show: false, todos: [ { text: '张三' }, { text: '李四' }, { text: '王五' } ] } }, //绑定的方法 methods: { handleMessage() { this.message = this.message.split('').reverse().join('') } }, mounted() { setInterval(() => { this.counter++ }, 1000) }, }; Vue.createApp(Count).mount('#app') ``` ## 组件 > 子组件中可以用`props:['prop']`来声明属性,父组件可以用`v-bind`来传值给`prop` html部分 ``` html ``` js部分 ```js const app = Vue.createApp({ data() { return { todoItems: [ { id: 1, text: "张三" }, { id: 2, text: "李四" }, { id: 3, text: "王五" }, { id: 4, text: "hello Vue" }, ] } }, }) app.component('todo-item', { //props中的参数在子组件中定义,父组件中v-bind使用 类似于提前占坑 props: ['comptodo'], //props中定义了就可以拿来用 template: `{{comptodo.text}}` }) app.mount('#app') ``` ## computed和methods区别 >1. 调用的时候`{{computed}}` `{{methods()}}` 2. computed有缓存,如果数值没改变是不会重新计算的,methods没有缓存,调用一次计算一次 3. computed返回的是一个值,methods是一个函数,
C# 委托和事件 2021-08-20 C# 暂无评论 ``` c# public delegate void SayHello(string content, string who);//定义委托(决定了参数类型和个数) public static event SayHello sayHelloEvent;//定义SayHello类型的事件 ``` ```c# SayHello dlgSay = say; //定义sayhelllo委托变量,并且绑定一个方法 dlgSay += say1; //给变量再增加一个方法 dlgSay("你好呀", "张三!"); //调用委托变量 这时候say和say1都会执行 SayHello dlgSay1 = delegate (string con, string name) { Console.WriteLine(name + con + "匿名函数"); }; //直接给委托变量绑定一个匿名函数 dlgSay1("nihao", "zhangsan"); SayHello dlg2 = (name, who) => { Console.WriteLine(name + who + "lambda"); };//绑定lambda表达式也可以 dlg2("你好,", "张三"); sayHelloEvent += Program_sayHelloEvent1; //注册事件 sayHelloEvent += Program_sayHelloEvent;//注册事件 //sayHelloEvent -= Program_sayHelloEvent; //注销事件 sayHelloEvent("事件", "事件1");//触发事件 ``` ```c# public static void say(string content, string who) { Console.Write($"{who}" + $"{content}"); } public static void say1(string content, string who) { Console.Write($"{who}" + $"{content}" + "say1"); } //触发事件的时候要执行的方法前提是已经次绑定了 private static void Program_sayHelloEvent1(string content, string who) { //原本应该是他先执行的(确实是先执行的)因为是异步延迟不妨碍后面的事件。 Task.Run(() => { Thread.Sleep(5000); Console.WriteLine(who + content + "我是被触发的事件 Program_sayHelloEvent1"); }); } private static void Program_sayHelloEvent(string content, string who) { Console.WriteLine(who + content + "我是被触发的事件 Program_sayHelloEvent"); } ``` tips: > 个人理解:委托(确定参数类型和个数)可以把方法给串起来,当这个委托变量被执行的时候会按照+=顺序来执行。 事件也是这么回事跟委托差不多,事件是用event修饰的委托,事件执行的时候,也是按照+=的顺序来执行方法(参数类型、个数、静态取决于委托是怎么定义的)
传说中的"解题思路"~~~ 2021-08-11 默认分类 暂无评论 ## 情景 如果遇到"数据库有就更新,没有就插入"的情况,先查询出唯一的记录 > 判断是否为空 如果是则Add() 如果不是空则SaveChanges()
C# ef框架的那些事 2021-08-04 C# 暂无评论 ## 安装EF框架 主要是版本要对应上 1. mysql-for-visualstudio-1.2.9.msi 2. mysql-connector-net-8.0.26.msi 3. 微软的ef框架 4. mysql.data 5. mysql.data.entityframework > 这几个装好就能用了2和5的版本要对上 ## 增删查改 1. 增 ```c# Model.Add(表对象); Model.SaveChanges(); ``` 2. 删 ```c# Model.Remove(表对象);//对象中需要包含主键 Model.SaveChanges(); ``` 3. 改 ```c# var selectItem = Model.表对象.FirstOrDefault(o => o.对象属性 == 条件值); select.表属性=修改后的值; Model.SaveChanges(); ``` 4. 查 > 查有很多中方法 where() Selecte()结合lambda表达式来用 ## 分页 分页一般是点击了当前页数才加载当前的数据,关键点有 1. 一页显示多少个 2. 数据的总数 3. 显示的页数(一般是自动算出来的) ```c# var data = hgqModel.d_it_base_info.Select(o => o).OrderBy(o => o.createDate).Skip(pageinde*count).Take(count).ToList(); ``` > 1. 在使用`Skip()`之前需要先排序这里用的OrderBy() 2. `Skip()`指的是跳过多少个, 公式是 (当前页-1)*一页可以显示的总数 3. `Take()`指的是获取多少个数据 一般就是一页显示的个数 ## 子表查询 > 背景:有两个表a和b,想要查询a表中某个字段和b某个字段相同的记录 tip:要查的是a表的记录,b字段是条件 ```C# nzsc_hgq_2021Entities2 a = new nzsc_hgq_2021Entities2(); var b = a.d_it_base_info.Where( o => o.barCode != o.d_it_detect.FirstOrDefault(x => x.barCode == o.barCode).barCode ).ToList(); ``` ##不关联表查询 > 上面子查询是两个表之间存在外键的情况,但是还有一种情况,两个表不关联,改怎么办呢? ``` c# var total =ef.tab1.Select(o=>o).toList();//总数 var used ef.tab2.Select(o=>o).toList();//已经使用的 return total.Where(o => !used.Exists(t => o.总数的字段.Equals(t.已用的字段))).ToList(); //方法1 可行 return markers.Where(a => maps.Where(t => a.latitude == t.lat).Any()).ToList(); // 方法2 没试 return markers.Where(a => !maps.Where(t => a.latitude == t.lat).Any()).ToList(); //取交集数据,加 '!' 没试 ``` ## 坑坑 1. 加载方式 - ef框架好像有好多中加载方式,定义的实体对象好像不会实施更新,所以每次用到的时候我都会直接再new一个实体