angular1的 伪MVC
- 以下的代码是自己对angular1的一些理解。如果非要按照mvc的这种模式开发。。可以用以下的这种方式理解。
- //userFactorys.js 这是服务方法 return 的方法取得json数据里的值 按照我的理解他属于 Model里的静态方法 也就是MVC中的M
- var app = angular.module('appFactorys',[]);
- app.factory('Movies',['$http',function($http){
var getMoveies = function(page){
return $http({
method: 'GET',
url: 'http://localhost:3000/moves?page='+page,
cache:false
})
}
return {
programs:function(page){
return getMoveies(page);
}
}
}])
- //userControllers.js 这是控制器方法 我个人理解他的 作用是 把从服务器取到的Json文件交给本身的 作用域 在让模板循环出来 相当于MVC中的C
- var app = angular.module('app',['appFactorys','appDirectives']); //依赖服务模块,和指令模块(自定义对应 指定module)
app.controller('getMovie',['$scope','Movies',function($scope,selMovie){
selMovie.programs(2).success(function(datas, status) { //服务模块里的方法
$scope.Moives = datas; //把获取到的数据库获取的数据交给 作用域
console.log(datas)
}).error(function(data,status){
console.log('error',status)
});
}])
- //userDirectives.js 这是指令,使用了getMovie控制器(Controller);这个时候利用getMovie控制器作用域里的$scope.Moives。值交给该模板Movies.html渲染页面 个人理解相当于MVC中的V
- var app = angular.module('appDirectives',['app','appFactorys']);
app.directive('movies',function(){
return {
restrict: 'E',
templateUrl: '/angularJs/Movies.html',
replace: false,
transclude: true,
controller:'getMovie',
}
});
- //这是movies模板 自己领会 (/angularJs/Movies.html)
- <div class="row">
<div ng-repeat="movie in Moives" class="col-md-12 " style="box-sizing: border-box; padding: 10px; ">
<div style="background: #f3f3f3; padding: 10px; border-radius: 5px; list-style: none;">
<div class="row">
<div class="col-md-1" style="text-align: center;"><img src="/torrent/{{movie._id}}/{{movie.title}}.jpg"></div>
<div class="col-md-11">
<ul style="list-style: none;">
<li title="{{movie.title}}">影片名:<span style="color: red;">{{movie.title}}</span></li>
<li>标签:<span ng-repeat="tag in movie.tags"> {{tag}} </span></li>
<li>出产年月:{{movie.particularYear}}</li>
<li>地区:<span ng-repeat="region in movie.regions"> {{region}} </span></li>
<li>imdb:{{movie.imdb}}</li>
</ul>
</div>
</div>
</div>
</div>
</div>
- 以上是MVC化 ,接下来将执行单页面程序化
- 1、这里需要导入 angular-route.js
- 2、测试用到两个 json
- 稍微将 userFactorys.js 改变一下
- var app = angular.module('appFactorys',[]);
- app.factory('Movies',['$http',function($http){
return {
programs:function(page){ //这个方法是查询指定页面电影的所有json数据
return $http({
method: 'GET',
url: 'http://localhost:3000/moves?page='+page,
cache:false
});
},
movieCount:function(){ //这个页面则是查询一共有多少页的电影数据 用来做翻页操作。
return $http({
method: 'GET',
url: 'http://localhost:3000/moc',
cache:false
})
}
}
}])
- 此时的 userControllers.js 应该是这样的
- var app = angular.module('appController',['appFactorys','appDirectives']);
app.controller('getMovie',['$scope','Movies','$routeParams',function($scope,selMovie,$routeParams){- $routeParams.page = $routeParams.page ? $routeParams.page : 1;
- var promise = selMovie.programs($routeParams.page).then(function(req){
$scope.Moives = req.data
return selMovie.movieCount();
}).then(function(req){
$scope.MoivesCount = req.data;
console.log($scope.MoivesCount,$scope.Moives)
})- }])
- 要把原来的方法promise化。 这样作用域 Moives 和 MoivesCount 将会同时有值 (因为查询json同时!) promise化很重要
- 而 $routeParams.page 这个参数 是路由传过来的
- 路由 :userRouter.js
- var remoteCamera = angular.module('app',['ngRoute','appController'])
.config(['$routeProvider',function($routeProvider) {
$routeProvider.when("/movies/:page", {
template: '<movies></movies>'
}).otherwise({
redirectTo: "/movies/1"
})
}]);
- 需要依赖于ngRoute 那么这个时候 指定路径 /movies/:page
- 1、page就是给controller 传过去的值 举例 :路径-> /movies/2就告诉了controller 去走第二页方法那么controller 会告诉服务去找相对json数据
- 返回给 temolate 模板 这个时候模板套用了 <movies></movies> 那么这个标签已经在指令中调整 渲染页面
- 2、此时的html页面应该是这样的
- <div ng-view></div>
- 同 1 服务 -》 控制器 -》 模板 -》 渲染给 ng-view
angular1的 伪MVC的更多相关文章
- 自己动手写一个简单的MVC框架(第一版)
一.MVC概念回顾 路由(Route).控制器(Controller).行为(Action).模型(Model).视图(View) 用一句简单地话来描述以上关键点: 路由(Route)就相当于一个公司 ...
- 谈谈JavaScript MVC模式
第一个是:没有使用mvc模式的: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "h ...
- 今日思考:MVC系列框架之Struts存在的意义是什么?
Struts其实就是MVC的代名词,那么提到MVC就不得不提早期的ModelⅠ.那时候JSP页面中混杂了大量的JAVA Scriptlet脚本语句,为了可维护性考虑,有人提出了ModelⅡ,也即现在的 ...
- 蒋金楠How ASP.NET MVC Works?[持续更新中…]
一.ASP.NET + MVC IIS与ASP.NET管道 MVC.MVP以及Model2[上篇] MVC.MVP以及Model2[下篇] ASP.NET MVC是如何运行的[1]: 建立在“伪”M ...
- How ASP.NET MVC Works?
原文地址:http://www.cnblogs.com/artech/archive/2012/04/10/how-mvc-works.html?ADUIN=7783008&ADSESSION ...
- Angular1和Aangular4剖析
字面解析: 1.Angular1又名angularJs,从angular2,angular4都不带JS 2.变化:angular2跳转到angular4 架构: 1.angular1是基于MVC 2. ...
- (转)深入研究 蒋金楠(Artech)老师的 MiniMvc(迷你 MVC),看看 MVC 内部到底是如何运行的
原文地址:http://www.cnblogs.com/Music/p/mini-mvc.html (含代码) ASP.NET MVC是如何运行的[1]: 建立在“伪”MVC框架上的Web应用 地址: ...
- How ASP.NET MVC Works ? (Artech)
一.ASP.NET + MVC IIS与ASP.NET管道 MVC.MVP以及Model2[上篇] MVC.MVP以及Model2[下篇] ASP.NET MVC是如何运行的[1]: 建立在“伪”MV ...
- 全栈设计模式套餐MVVM, RESTful, MVC的历史探索
众所周知, 软件开发时遵守一个规范的设计模式非常重要, 学习行业内主流的design pattern往往能够为你节省大部分时间. 根据我2年的全栈经验, 在Web应用程序领域最流行的, 并且若干年内不 ...
随机推荐
- cesium编程中级开篇
cesium编程中级开篇 其实初级,中级并无定论,我理解的初级是根据官方教程,先学会如何部署环境,搭建hello world,使用官方提供的工具,完成一些示例, 而中级就是在这些的基础上,自己定制一些 ...
- Js 事件详解
1.事件流 1.1 事件流 描述的是在页面中接受事件的顺序 1.2 事件冒泡 由最具体的元素接收,然后逐级向上传播最不具体的元素的节点(文档) 1.3 事件捕获 最不具体的节点先接收事件,而最具体的节 ...
- mysql 判断表字段或索引是否存在 - 举一反三
判断字段是否存在: DROP PROCEDURE IF EXISTS schema_change; DELIMITER // CREATE PROCEDURE schema_change() BEGI ...
- PHP创建与解析 XML 1 (36)
一.使用SimpleXML操控XML 要处理XML 文件,有两种传统的处理思路:SAX 和DOM.SAX 基于事件触发机制,对XML 文件进行一次扫描,完成要进行的处理:DOM 则将整个XML 文件构 ...
- LOJ#6046. 「雅礼集训 2017 Day8」爷(分块)
题面 传送门 题解 转化为\(dfs\)序之后就变成一个区间加,区间查询\(k\)小值的问题了,这显然只能分块了 然而我们分块之后需要在块内排序,然后二分\(k\)小值并在块内二分小于它的元素--一个 ...
- LOJ#6045. 「雅礼集训 2017 Day8」价(最小割)
题面 传送门 题解 首先先把所有权值取个相反数来求最大收益,因为最小收益很奇怪 然后建图如下:\(S\to\)药,容量\(\inf+p_i\),药\(\to\)药材,容量\(\inf\),药材\(\t ...
- CodeChef April Challenge 2019题解
传送门 \(Maximum\ Remaining\) 对于两个数\(a,b\),如果\(a=b\)没贡献,所以不妨假设\(a<b\),有\(a\%b=a\),而\(b\%a<a\).综上, ...
- C语言实现单链表,并完成链表常用API函数
C语言实现单链表,并完成链表常用API函数: 1.链表增.删.改.查. 2.打印链表.反转打印.打印环形链表. 3.链表排序.链表冒泡排序.链表快速排序. 4.求链表节点个数(普通方法.递归方法). ...
- 在PL/SQL里直接插入日期时提示 is not a valid date and time的解决方法
在PL/SQL Developer里直接往表里插入日期格式的数据时,经常会出现" is not a valid date and time"的错误,这是因为Oracle的日期格式和 ...
- P3622 [APIO2007]动物园
题目链接 题意分析 这是一道状压\(DP\)的题 一个人只可以欣赏到\(5\)只动物 显然可以状压 我们用\(dp[i][j]\)表示当前\([i,i+4]\)中这\(5\)只动物的状态\(j\) 在 ...