AngularJS (前端MVC框架)

AngularJS是一款优秀的前端JS框架,已经被用于Google的多款产品当中。AngularJS的核心特点是:MVVM、模块化、自动化双向数据绑定、语义化标签、依赖注入。
适用于:构建CRUD web应用。(CDUQ,数据的增删改查)。
不适用于:游戏,图形界面编辑器。这种DOM操作很频繁也很复杂的应用,和CRUD应用就有很大的不同,它们不适合用AngularJS来构建。像这种情况用一些更轻量、简单的技术如jQuery可能会更好。

参考

官方API : http://docs.ngnice.com/api/

慕课网教程:  http://www.imooc.com/learn/156

MVC

M,Model,数据模型
V,View,视图,负责向用户展示的部分
C,Controller,业务逻辑和控制逻辑

基础语法

AngularJS 通过 ng-directives 扩展了 HTML。
ng-app 指令定义一个 AngularJS 应用程序。
ng-model 指令把元素值(比如输入域的值)绑定到应用程序。
ng-bind 指令把应用程序数据绑定到 HTML 视图。
{{表达式}}   等同于ng-bind

AngularJS 控制器

ng-controller 指令定义了应用程序控制器。
控制器是 JavaScript 对象,由标准的 JavaScript 对象的构造函数 创建。
控制器的 $scope 是控制器所指向的应用程序
HTML 元素。

AngularJS 模块

模块定义了您的应用程序。所有的控制器都应该属于一个模块。模块保持全局命名空间中的整洁。

在本实例中,"myApp.js" 包含了一个应用程序模块定义,"myCtrl.js" 包含了一个控制器:

<!DOCTYPE html>
<html>
<body>

<div ng-app="myApp" ng-controller="myCtrl">
{{ firstName + " " + lastName }}
</div>

<script src="//www.w3cschool.cc/try/angularjs/1.2.5/angular.min.js"></script>
<script src="myApp.js"></script>
<script src="myCtrl.js"></script>

</body>
</html>
		
//myapp.js
var app = angular.module("myApp", []); 
//myCtrl.js
app.controller("myCtrl", function($scope) {
    $scope.firstName = "John";
    $scope.lastName = "Doe";
});

注意:

angular.module(naAppName,[dependentModule1,...,dependentModuleN]) //一个ng-app对应着一个module,这个是定义。注意不能重复定义!
angular.module(naAppName)//定义完ngApp的模块之后,可通过此函数获得naAppName对应的模块,用来绑定多个控制器。

函数的传参

例:

<!-- 传参要这样传,url会自动被$scope.url内容替换 -->
<button ng-click='setInitialUrl(url)'>确定</button>
<!-- 若传真假,这样做就是对的-->
<button ng-click='collectService(true)'>是</button>

控制器间的通信

共享变量:

通过service,即angular.module().service(name,fun)。这么做有一个问题,$watch()不能捕获service中变量的改动,有这种需求的话就只能靠通信了。

通信:ng的控制器是有继承关系的。控制器向父级发$emit()事件,向子级发$broadcast()事件,事件接收方实现$on()即可完成通信。例子转自 http://blog.51yip.com/jsjquery/1602.html。

html

<div ng-controller="ParentCtrl">                  //父级
    <div ng-controller="SelfCtrl">                //自己
        <a ng-click="click()">click me</a>
        <div ng-controller="ChildCtrl"></div>     //子级
    </div>
    <div ng-controller="BroCtrl"></div>           //平级
</div>

js

phonecatControllers.controller('SelfCtrl', function($scope) {
    $scope.click = function () {
        $scope.$broadcast('to-child', 'child');
        $scope.$emit('to-parent', 'parent');
    }
});

phonecatControllers.controller('ParentCtrl', function($scope) {
    $scope.$on('to-parent', function(d,data) {
        console.log(data);         //父级能得到值
    });
    $scope.$on('to-child', function(d,data) {
        console.log(data);         //子级得不到值
    });
});

phonecatControllers.controller('ChildCtrl', function($scope){
    $scope.$on('to-child', function(d,data) {
        console.log(data);         //子级能得到值
    });
    $scope.$on('to-parent', function(d,data) {
        console.log(data);         //父级得不到值
    });
});

phonecatControllers.controller('BroCtrl', function($scope){
    $scope.$on('to-parent', function(d,data) {
        console.log(data);        //平级得不到值
    });
    $scope.$on('to-child', function(d,data) {
        console.log(data);        //平级得不到值
    });
});

点击Click me的输出结果为 :

child
parent 
时间: 2024-11-01 08:01:36

AngularJS (前端MVC框架)的相关文章

AngularJs Javascript MVC 框架_AngularJS

在6月google发布了AngularJs 1.0稳定版, 并宣称:AngularJS可以让你扩展HTML的语法,以便清晰.简洁地表示应用程序中的组件,并允许将标准的HTML作为你的模板语言,AngularJS可以通过双向数据绑定自动从拥有JavaScript对 象(模型)的UI(视图)中同步数据. 开始接触AngularJs是在4月份来到新项目组,这时AngularJs还处于0.8未稳定版,项目中已经开始使用了,并且这套框架应用到了项目整个UI端,服务端也是未稳定的web api,真心佩服团队

AngularJs - Javascript MVC 框架

      在6月google发布了AngularJs 1.0稳定版,      并宣称:AngularJS可以让你扩展HTML的语法,以便清晰.简洁地表示应用程序中的组件,并允许将标准的HTML作为你的模板语言,AngularJS可以通过双向数据绑定自动从拥有JavaScript对 象(模型)的UI(视图)中同步数据.     开始接触AngularJs是在4月份来到新项目组,这时AngularJs还处于0.8未稳定版,项目中已经开始使用了,并且这套框架应用到了项目整个UI端,服务端也是未稳定

WebApp MVC 框架的开发细节归纳

  在前文<WebApp MVC,"不一样"的轻量级互联网应用程序开发框架>介绍了WebApp MVC的技术实现以及如何使用,而在本章进一步归纳了使用框架开发的一些细节,也给我们在开发具体功能的时候提供一个正确的方法:共归纳了三点,具体内容如下: 1.URL请求页面 1)使用Nvelocity显示页面 2)第一次页面加载中的Jqueryeasyui控件数据特殊处理   2.Form表单提交数据 1)action提交 2)action提交前进行数据验证 3)使用JQuerye

Dojo的MVC框架简介

随着 Web2.0 技术日新月异的发展,各个 Web 软件应用的前端的复杂度已经远远超出了我们的预期,于是,MVC 便再次出现了 -- 前端 MVC 模型,也即 Web2.0 的 MVC 模型.与此同时,相应的前端 MVC 框架也应运而生:Dojo 这样一个强大且完善的 Web 开发控件库,首当其冲的实现了一套基于 MVC 模式的框架工具包,让我们可以非常方便快捷地构造我们的 Web2.0 前端 MVC 应用.这篇文章将重点介绍 Dojo 的 MVC 工具包所带给我们的各种便利以及他的一些使用技

产品前端重构(TypeScript、MVC框架设计)

最近两周完成了对公司某一产品的前端重构,本文记录重构的主要思路及相关的设计内容. 公司期望把某一管理类信息系统从项目代码中抽取.重构为一个可复用的产品.该系统的前端是基于 ExtJs 5 进行构造的,后端是基于 Asp.net MVC 提供的 REST 数据接口.同时,希望通过这次重构,不但能将其本身重构至可用于快速二次开发的产品,同时还要求该前端代码要保证相对的独立,使得同时可以接入 .NET 和 JAVA 两个不同的后端平台所提供的数据接口.   旧代码的问题 老系统的前端代码如下图所示:

AngularJs:Javascript MVC框架

在6月google发布了AngularJs 1.0稳定版, 并宣称:AngularJS可以让你扩展HTML的语法,以便清晰.简洁地表示应用程序中的组件,并允许将标准的HTML作为你的模板语言,AngularJS可以通过双向数据绑定自动从拥有JavaScript对 象(模型)的UI(视图)中同步数据. 开始接触AngularJs是在4月份来到新项目组,这时AngularJs还处于0.8未稳定版,项目中已经开始使用了,并且这套框架应用到了项目整个UI端,服务端也是未稳定的web api,真心佩服团队

采用angularjs实现MVC,是不是它的web api同时也能很好的支持APP?

问题描述 如果用razor实现MVC的话,调用的是业务逻辑层的方法,为了支持移动APP,还需要另外开发webapi.如果用angularjs实现MVC的话,angularjs调用的是webapi,这些webapi也可以被手机端的APP直接使用吧?另外,如果是这样,在性能上,用RAZOR实现的MVC快,还是用angularjs通过webapi实现的MVC快?差异大吗,谢谢! 解决方案 解决方案二:angular.js是UI框架,razor是mvc模板,两者不具备可比性,而移动app与一般的程序访问

前端MVC变形记

背景: MVC是一种架构设计模式,它通过关注点分离鼓励改进应用程序组织.在过去,MVC被大量用于构建桌面和服务器端应用程序,如今Web应用程序的开发已经越来越向传统应用软件开发靠拢,Web和应用之间的界限也进一步模糊.传统编程语言中的设计模式也在慢慢地融入Web前端开发.由于前端开发的环境特性,在经典MVC模式上也引申出了诸多MV*模式,被实现到各个Javascript框架中都有多少的衍变.在研究MV*模式和各框架的过程中,却是"剪不断.理还乱": 为什么每个地方讲的MVC都不太一样?

Angular.js框架基础知识,来自Google的前端JavaScript框架

AngularJS 是一款来自 Google 的前端 JavaScript 框架,也是 SPA(single-page-application,单页应用)框架.AngularJS 框架的体积非常小,但是设计理念和功能却非常强大,极大地简化前端开发的负担,它快速成为了 JavaScript 的主流框架,帮助开发者从事 web 开发. SPA 和 MVC SPA:单页面应用是指用户通过浏览器加载独立的 HTML 页面并且无需离开此导航页面.对用户操作来说,一旦加载和执行单个页面应用程序通常会有更多的