MVVM:

angular的MVVM实现的是双向数据绑定,模型从服务器端抓取到数据,将数据通过控制器(controller)传递到视图(view)显示,视图数据发生变化时同样也会影响到模型数据的变化,这既是双向数据绑定。

$scope便是视图模型,controller的作用便是view与model之间的桥梁(纽带)。

基本模式分析:

  <!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>test</title>
</head>
<body ng-app="app">    <!-- angular模块 -->
<p ng-controller="myCtr">{{msg}}</p> <!-- angular控制器 -->
</div>
<script src="angular.min.js"></script>
<script>
var m = angular.module("app", []); //加载angular模块,[]表示有其他模块需要加载时才会用到
m.controller("myCtr", ["$scope", function($scope){ //定义控制器 推荐使用这种写法,缩后不易出现问题
$scope.msg="lol";
}]);
</script>
</body>
</html>

注意上述代码,每一句都有加分号,是因为在代码通过gulp压缩后,代码会连在一起,若不加分号,压缩后就无法正常运行了

对比下面的写法:

 var m = angular.module("app", []); //加载angular模块,[]表示有其他模块需要加载时才会用到
m.controller("myCtr", function($scope){ //定义控制器 不建议使用这种写法
$scope.msg="lol";
});

这种写法是比较精简,但是代码压缩后,形式参数$scope会变成单个字母,如"a"等,这样代码就不能正常运行了,而上面的第一种写法,可以正常运行,所以建议写成第一种

 angular.module("app", []).controller("myCtr",["$scope", function(a){a.msg="lol";}]); //可以正常运行
angular.module("app", []).controller("myCtr", function(a){a.msg="lol"; }); //不能正常运行

所以综上所诉,代码书写注意规范且加 “;”,这样代码在压缩后就不会出现问题了。

Angular双向数据绑定MVVM以及基本模式分析的更多相关文章

  1. 第217天:深入理解Angular双向数据绑定的原理

    一.理解angular双向数据绑定 双向绑定是新的前端框架中频繁出现的一个新词汇,也是mvvm的核心原理.angularjs五条核心信念中的数据驱动,便是由双向绑定进行完成. 那么什么是双向绑定,下面 ...

  2. 实现双向数据绑定mvvm

    实现双向数据绑定mvvm  

  3. 自己手动实现简单的双向数据绑定 mvvm

    数据绑定 数据绑定一般就是指的 将数据 展示到 视图上.目前前端的框架都是使用的mvvm模式实现双绑的.大体上有以下几种方式: 发布订阅 ng的脏检查 数据劫持 vue的话采用的是数据劫持和发布订阅相 ...

  4. angular 双向数据绑定与vue数据的双向数据绑定

    二者都是 MVVM 模式开发的典型代表 angular 是通过脏检测实现,angular 会将 UI 事件,请求事件,settimeout 这类延迟的对象放入到事件监测的脏队列,当数据变化的时候,触发 ...

  5. Angular 双向数据绑定

    <!DOCTYPE html><html ng-app="myApp"><head lang="en"> <meta ...

  6. angular双向数据绑定

    <body ng-app> //三个view都会变 <input type="text" ng-model="name" value=&quo ...

  7. 简单实现双向数据绑定mvvm。

  8. vue 双向数据绑定 Vue事件介绍 以及Vue中的ref获取dom节点

    <template> <div id="app"> <h2>{{msg}}</h2> <input type="te ...

  9. Vue 及双向数据绑定 Vue事件 以及Vue中的ref获取dom节点

    <template> <div id="app"> <h2>{{msg}}</h2> <input type="te ...

随机推荐

  1. 处理Xcode 警告

    除了代码中我们手动加入的 #Waring  标示 所产生的警告,我们都应该重视.下面是一些警告的处理. 1,方法过期,或 使用新的api  替换方案 multipartFormRequestWithM ...

  2. Python绘制PDF文件~超简单的小程序

    Python绘制PDF文件 项目简介 这次项目很简单,本次项目课,代码不超过40行,主要是使用 urllib和reportlab模块,来生成一个pdf文件. reportlab官方文档 http:// ...

  3. C#和ASP.NET之事件

    事件是一种用于类和类之间传递消息或触发新的行为的编程方式.通过提供事件的句柄,能够把控件和可执行的代码联系在一起, 如用户单击Button控件触发Click事件后就执行相应的事件处理代码. 事件的声明 ...

  4. 控制Arduino的利器-Windows Remote Arduino

    1. 概述 相信很多朋友已经在玩 Arduino了,而且一般都是使用官方的Arduino IDE来写程序控制Arduino硬件.为了能够实现更加方便的控制,微软在Windows IoT计划中推出了Wi ...

  5. mvc中服务器端、客户端属性验证

    在mvc中使用表单进行数据提交时,数据验证分为服务器端验证和客户端验证: 我们可以通过使用HtmlHelper中的方法及在页面中引用js库对Model的属性的数据注解(System.Component ...

  6. Linux AVG ANTIVIRUS FREE使用介绍

    杀毒软件AVG,没有用过估计也有所耳闻.AVG ANTIVIRUS FREE - FOR LINUX 是AVG在Linux下的一款免费杀毒软件.它的官方下载地址供了rpm.deb.源码安装包等多种安装 ...

  7. 【转】Flex 布局语法教程

    网页布局(layout)是CSS的一个重点应用. 布局的传统解决方案,基于盒状模型,依赖 display属性 + position属性 + float属性.它对于那些特殊布局非常不方便,比如,垂直居中 ...

  8. 萌新笔记——C++里创建 Trie字典树(中文词典)(一)(插入、遍历)

    萌新做词典第一篇,做得不好,还请指正,谢谢大佬! 写了一个词典,用到了Trie字典树. 写这个词典的目的,一个是为了压缩一些数据,另一个是为了尝试搜索提示,就像在谷歌搜索的时候,打出某个关键字,会提示 ...

  9. Jenkins部署到远程(Linux服务器)

    接着上次的说,上次只是实现了本地自动化部署,这种情况只是针对开发环境和部署环境在同一台机器时适用.不过,一般情况下,我们都会要把项目部署到远程Linux服务器上,所以这节的主要内容是: 1.部署开发环 ...

  10. Centos7 and docker practices

    1. Failed to get D-Bus connection: Operation not permitted error when you execute the systemctl star ...