1. 以下的代码是自己对angular1的一些理解。如果非要按照mvc的这种模式开发。。可以用以下的这种方式理解。
  2.  
  3. //userFactorys.js 这是服务方法 return 的方法取得json数据里的值 按照我的理解他属于 Model里的静态方法 也就是MVC中的M
  1. var app = angular.module('appFactorys',[]);
  2.  
  3. 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);
    }
    }
    }])
  1.  
  1. //userControllers.js 这是控制器方法 我个人理解他的 作用是 把从服务器取到的Json文件交给本身的 作用域 在让模板循环出来 相当于MVC中的C
  1. 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)
    });
    }])
  1.  
  1. //userDirectives.js 这是指令,使用了getMovie控制器(Controller);这个时候利用getMovie控制器作用域里的$scope.Moives。值交给该模板Movies.html渲染页面 个人理解相当于MVC中的V
  1. var app = angular.module('appDirectives',['app','appFactorys']);
    app.directive('movies',function(){
    return {
    restrict: 'E',
    templateUrl: '/angularJs/Movies.html',
    replace: false,
    transclude: true,
    controller:'getMovie',
    }
    });
  1.  
  1. //这是movies模板 自己领会 (/angularJs/Movies.html)
  1. <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">&nbsp;&nbsp;{{tag}}&nbsp;&nbsp;</span></li>
    <li>出产年月:{{movie.particularYear}}</li>
    <li>地区:<span ng-repeat="region in movie.regions">&nbsp;&nbsp;{{region}}&nbsp;&nbsp;</span></li>
    <li>imdb:{{movie.imdb}}</li>
    </ul>
    </div>
    </div>
    </div>
    </div>
    </div>
  1.  
  1. 以上是MVC ,接下来将执行单页面程序化
  1. 1、这里需要导入 angular-route.js
  1. 2、测试用到两个 json
  1.  

  1. 稍微将 userFactorys.js 改变一下
  1. var app = angular.module('appFactorys',[]);
  2.  
  3. 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
    })
    }
    }
    }])
  1.  

  1. 此时的 userControllers.js 应该是这样的
  1. var app = angular.module('appController',['appFactorys','appDirectives']);
    app.controller('getMovie',['$scope','Movies','$routeParams',function($scope,selMovie,$routeParams){
  2.  
  3. $routeParams.page = $routeParams.page ? $routeParams.page : 1;
  4.  
  5. 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)
    })
  6.  
  7. }])
  1. 要把原来的方法promise化。 这样作用域 Moives MoivesCount 将会同时有值 (因为查询json同时!) promise化很重要
  1. $routeParams.page 这个参数 是路由传过来的

  1. 路由 userRouter.js
  1. var remoteCamera = angular.module('app',['ngRoute','appController'])
    .config(['$routeProvider',function($routeProvider) {
    $routeProvider.when("/movies/:page", {
    template: '<movies></movies>'
    }).otherwise({
    redirectTo: "/movies/1"
    })
    }]);
  1. 需要依赖于ngRoute 那么这个时候 指定路径 /movies/:page
  1. 1page就是给controller 传过去的值 举例 :路径-> /movies/2就告诉了controller 去走第二页方法那么controller 会告诉服务去找相对json数据 
  1. 返回给 temolate 模板 这个时候模板套用了 <movies></movies> 那么这个标签已经在指令中调整 渲染页面
  1. 2、此时的html页面应该是这样的
  1. <div ng-view></div>
  1. 1 服务 -》 控制器 -》 模板 -》 渲染给 ng-view

  1.  
  1.  
  1.  
  1.  
  1.  
  1.  

angular1的 伪MVC的更多相关文章

  1. 自己动手写一个简单的MVC框架(第一版)

    一.MVC概念回顾 路由(Route).控制器(Controller).行为(Action).模型(Model).视图(View) 用一句简单地话来描述以上关键点: 路由(Route)就相当于一个公司 ...

  2. 谈谈JavaScript MVC模式

    第一个是:没有使用mvc模式的: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "h ...

  3. 今日思考:MVC系列框架之Struts存在的意义是什么?

    Struts其实就是MVC的代名词,那么提到MVC就不得不提早期的ModelⅠ.那时候JSP页面中混杂了大量的JAVA Scriptlet脚本语句,为了可维护性考虑,有人提出了ModelⅡ,也即现在的 ...

  4. 蒋金楠How ASP.NET MVC Works?[持续更新中…]

    一.ASP.NET + MVC IIS与ASP.NET管道 MVC.MVP以及Model2[上篇]  MVC.MVP以及Model2[下篇] ASP.NET MVC是如何运行的[1]: 建立在“伪”M ...

  5. How ASP.NET MVC Works?

    原文地址:http://www.cnblogs.com/artech/archive/2012/04/10/how-mvc-works.html?ADUIN=7783008&ADSESSION ...

  6. Angular1和Aangular4剖析

    字面解析: 1.Angular1又名angularJs,从angular2,angular4都不带JS 2.变化:angular2跳转到angular4 架构: 1.angular1是基于MVC 2. ...

  7. (转)深入研究 蒋金楠(Artech)老师的 MiniMvc(迷你 MVC),看看 MVC 内部到底是如何运行的

    原文地址:http://www.cnblogs.com/Music/p/mini-mvc.html (含代码) ASP.NET MVC是如何运行的[1]: 建立在“伪”MVC框架上的Web应用 地址: ...

  8. How ASP.NET MVC Works ? (Artech)

    一.ASP.NET + MVC IIS与ASP.NET管道 MVC.MVP以及Model2[上篇] MVC.MVP以及Model2[下篇] ASP.NET MVC是如何运行的[1]: 建立在“伪”MV ...

  9. 全栈设计模式套餐MVVM, RESTful, MVC的历史探索

    众所周知, 软件开发时遵守一个规范的设计模式非常重要, 学习行业内主流的design pattern往往能够为你节省大部分时间. 根据我2年的全栈经验, 在Web应用程序领域最流行的, 并且若干年内不 ...

随机推荐

  1. cesium编程中级开篇

    cesium编程中级开篇 其实初级,中级并无定论,我理解的初级是根据官方教程,先学会如何部署环境,搭建hello world,使用官方提供的工具,完成一些示例, 而中级就是在这些的基础上,自己定制一些 ...

  2. Js 事件详解

    1.事件流 1.1 事件流 描述的是在页面中接受事件的顺序 1.2 事件冒泡 由最具体的元素接收,然后逐级向上传播最不具体的元素的节点(文档) 1.3 事件捕获 最不具体的节点先接收事件,而最具体的节 ...

  3. mysql 判断表字段或索引是否存在 - 举一反三

    判断字段是否存在: DROP PROCEDURE IF EXISTS schema_change; DELIMITER // CREATE PROCEDURE schema_change() BEGI ...

  4. PHP创建与解析 XML 1 (36)

    一.使用SimpleXML操控XML 要处理XML 文件,有两种传统的处理思路:SAX 和DOM.SAX 基于事件触发机制,对XML 文件进行一次扫描,完成要进行的处理:DOM 则将整个XML 文件构 ...

  5. LOJ#6046. 「雅礼集训 2017 Day8」爷(分块)

    题面 传送门 题解 转化为\(dfs\)序之后就变成一个区间加,区间查询\(k\)小值的问题了,这显然只能分块了 然而我们分块之后需要在块内排序,然后二分\(k\)小值并在块内二分小于它的元素--一个 ...

  6. LOJ#6045. 「雅礼集训 2017 Day8」价(最小割)

    题面 传送门 题解 首先先把所有权值取个相反数来求最大收益,因为最小收益很奇怪 然后建图如下:\(S\to\)药,容量\(\inf+p_i\),药\(\to\)药材,容量\(\inf\),药材\(\t ...

  7. CodeChef April Challenge 2019题解

    传送门 \(Maximum\ Remaining\) 对于两个数\(a,b\),如果\(a=b\)没贡献,所以不妨假设\(a<b\),有\(a\%b=a\),而\(b\%a<a\).综上, ...

  8. C语言实现单链表,并完成链表常用API函数

    C语言实现单链表,并完成链表常用API函数: 1.链表增.删.改.查. 2.打印链表.反转打印.打印环形链表. 3.链表排序.链表冒泡排序.链表快速排序. 4.求链表节点个数(普通方法.递归方法). ...

  9. 在PL/SQL里直接插入日期时提示 is not a valid date and time的解决方法

    在PL/SQL Developer里直接往表里插入日期格式的数据时,经常会出现" is not a valid date and time"的错误,这是因为Oracle的日期格式和 ...

  10. P3622 [APIO2007]动物园

    题目链接 题意分析 这是一道状压\(DP\)的题 一个人只可以欣赏到\(5\)只动物 显然可以状压 我们用\(dp[i][j]\)表示当前\([i,i+4]\)中这\(5\)只动物的状态\(j\) 在 ...