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应用程序领域最流行的, 并且若干年内不 ...
随机推荐
- Jenkins+.Net Core+Git集成发布 - SkyMallCore快速开发平台
准备工作:安装 Jenkins+java 直接百度安装,在此忽略 dotnet sdk(iis部署已经安装) 一:windows 部署到IIS 首先搭建IIS,站点应用程序池选择 ‘无托管代码’ 安装 ...
- Keepalived_vrrp: ip address associated with VRID not present in received packet
keepalived常见的启动报错: 5913 May 16 15:26:04 localhost Keepalived_vrrp: ip address associated with VRID n ...
- Exp1 PC平台逆向破解 20164323段钊阳
实验目标 学习两种方法运行代码片段,并学习如何注入运行任何Shellcode. 三个实验内容如下: 1.手工修改可执行文件,改变程序执行流程,直接跳转到getshell函数 2.利用foo函数的bof ...
- 内置函数——sorted
对List.Dict进行排序,Python提供了两个方法对给定的List L进行排序,方法1.用List的成员函数sort进行排序,在本地进行排序,不返回副本方法2.用built-in函数sorted ...
- robot framework学习笔记之九-杂记
Setup和Teardown 假设Suite1下面有Test1和Test2,若它们都设置了Setup和Teardown,那么它们的执行顺序是:Suite1-Setup->Test1-Setup- ...
- 【vim】正常模式下的一般操作
正常模式一般用于浏览文本,其实也就是通过键盘命令让光标在文本中跳来跳去,在任何模式下按一次或两次<Esc>会进入正常模式. 基本思想 vim对光标的定位操作非常精确和高效,这是它的一个非常 ...
- POJ 2215
//package j; import java.util.*; public class Main { public static void main(String args[]){ int r; ...
- 多事实表 SQL实现和SSAS中MDX实现的差异
如图,资产负债视图是事实表,损益表也是事实表.都包含年.月.组织.账簿信息. SQL如何实现呢? 简单粗暴,事实事实表串事实表,Full Join select 损益视图.年 ,损益视图.年月 ,损益 ...
- FJWC2019 全连
题目描述 有n个音符,第i个音符会在第i个时刻来临 令第 i 个音符的准备时间为 ti 个单位时间,如果选择去点击第 i 个音符,那么就没法点击所有到来时刻在 (i−ti ,i+ti)中的音符. ...
- jsp页面struts2标签展示clob类型的数据
直接从数据库中查出来的数据,是clob类型的在前端页面展示的时候是这样: 后来找到了一个方法,在action中添加一个方法,解析转换clob数据的方法 public String getClob(Cl ...