发表于: 2017-06-01 23:39:01
1 1100
今天完成的事情:
学习基于Metronic的Bootstrap开发框架:
启动菜单区的内容,动态从数据库里面获取,系统顶栏放置一些信息展示,以及提供用户对个人数据快速处理,如查看个人信息、注销、锁屏等操作,内容区域则主要是可视化展示的数据,可以通过树列表控件、表格控件进行展示,一般数据还有增删改查、以及分页的需要,因此需要整合各种功能的处理。另外,用户的数据,除了查询展示外,还需要有导入、导出等相关操作,这些是常规性的数据处理功能。确定好这些规则和界面效果后,通过代码生成工具快速生成这些Web项目的界面效果了。
1.如果组件、指令或管道出现在模块的imports数组中,不要把它声明在declarations数组中。 如果它是你自己写的,并且属于当前模块,就要把它声明在declarations数组中。
2.当在表单中使用[(ngModel)]时,必须要定义name属性。
3.在内部,Angular 创建了一些FormControl,并把它们注册到NgForm指令,再将该指令附加到标签。 注册每个FormControl时,使用name属性值作为键值。
4.每个 input 元素都有name属性,Angular 表单用它注册控件。
5.在属性绑定中,值从模型中流动到屏幕上的目标属性 (property)。 通过把属性名括在方括号中来标记出目标属性,[]。 这是从模型到视图的单向数据绑定。
6.在事件绑定中,值从屏幕上的目标属性流动到模型。 通过把属性名括在圆括号中来标记出目标属性,()。 这是从视图到模型的反向单向数据绑定。
7.Angular 选择了组合标点 [()] 来标记出双向数据绑定和双向数据流
。
8.可以把NgModel绑定拆成两个独立的绑定:
<input type="text" class="form-control" id="name" required [ngModel]="model.name" name="name" (ngModelChange)="model.name = $event" >。
其中:ngModelChange并不是元素的事件。 它实际上是来自NgModel指令的事件属性。
9.当 Angular 在表单中看到[(x)]的绑定目标时, 它会期待这个x指令有一个名为x的输入属性,和一个名为xChange的输出属性。
10.模板表达式中的另一个古怪之处是model.name = $event。 之前看到的$event对象来自 DOM 事件。 但ngModelChange属性不会生成 DOM 事件 —— 它是Angular EventEmitter类型的属性,当它触发时, 它返回的是输入框的值 —— 也正是希望赋给模型name属性的值。
11.在表单中使用ngModel可以获得比仅使用双向数据绑定更多的控制权。它还会告诉我们很多信息:用户碰过此控件吗?它的值变化了吗?数据变得无效了吗?
12.NgModel 指令不仅仅跟踪状态。它还使用特定的 Angular CSS 类来更新控件,以反映当前状态。 可以利用这些 CSS 类来修改控件的外观,显示或隐藏消息。
明天计划的事情:
继续学习angular
问题:
生物钟混乱
收获:
如上
评论