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应用程序领域最流行的, 并且若干年内不 ...
随机推荐
- WPF 使用OCX控件速度很慢
最近公司项目,需要在wpf上面嵌入ocx控件,但是程序运行起来后,进行操作后,界面一直很卡,找了各种原因,没有找到原因,后来直接运行exe文件,速度顿时快了很多.
- 【OCP题库-12c】最新CUUG OCP 071考试题库(69题)
69.(31-1)choose the best answer: Evaluate the following query: SELECT INTERVAL '300' MONTH, INTERVAL ...
- HDU 3007 模拟退火算法
Buried memory Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Tot ...
- 关于sql注入的简要演示
文章分类:周稿 团队成员:sundy 首先可能大家都会问什么是sql? Sql是数据库的一种类型,是用来存储网站数据的. 每当我们点开一个网站,就会从网站的数据库中获取相关的内容. 我们来梳理一下 ...
- deepin配置反向代理映射本地到公网
这里我是用的小米球的免费ngrok 相信deepin的新用户在配置反向代理时,会感觉到一脸茫然,因为一开始我也是这样,但经过短暂的了解了deepin后,发现,其实与在Debian上配置并没有什么区别! ...
- 线程池(Linux实现)
讨论QQ群:135202158 本文技术参考了sourceforge项目c thread pool,链接:http://sourceforge.net/projects/cthpool/ 线程池如上一 ...
- null、 is_null() 、empty() 、isset() PHP 判断变量是否为空
PHP中,在判断变量是否为空的时候,总会纠结应该选用哪个函数,下面列取常用的多种情况,其中1/3经过我的验证,其它来自网络,验证后使用... 使用 PHP 函数对变量 $x 进行比较 表达式 gett ...
- C# ListView用法详解 很完整
一.ListView类 1.常用的基本属性: (1)FullRowSelect:设置是否行选择模式.(默认为false) 提示:只有在Details视图该属性才有意义. (2) GridLines:设 ...
- Python基础部分的疑惑解析(1)
Python介绍: 是一种全能的语言,虽然执行效率低,但是开发效率高 现在也存在多种版本,IPYTHON,JPYTHON,但最重要的是CPYTHON,其他都是作用于各种语言的粘合剂版本,执行效率低,C ...
- docker 运行容器时为容器起别名
docker run --name=mydemo -p -d 2222:80 imagename --name: 指定容器名称 -p:指定容器端口号 -d:指定容器后台运行