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">&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>

以上是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.datareturn 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  






 
时间: 2025-01-11 11:38:57

angular1的 伪MVC的相关文章

谈谈JavaScript MVC模式

第一个是:没有使用mvc模式的: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equ

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

Struts其实就是MVC的代名词,那么提到MVC就不得不提早期的ModelⅠ.那时候JSP页面中混杂了大量的JAVA Scriptlet脚本语句,为了可维护性考虑,有人提出了ModelⅡ,也即现在的MVC模式.所以可以看出来,MVC的提出是建立在早期JSP页面中混杂了大量的JAVA Script脚本语句的前提之下的.在这种情况下MVC的出现让JSP的世界变得干净许多. 虽说是MVC框架,其实有人也指出,Struts系的框架只能算是一种伪MVC.为什么这么说呢?因为它没有MVC中的最核心的部分:

How ASP.NET MVC Works?

一.ASP.NET + MVC IIS与ASP.NET管道 MVC.MVP以及Model2[上篇] MVC.MVP以及Model2[下篇] ASP.NET MVC是如何运行的[1]: 建立在“伪”MVC框架上的Web应用 ASP.NET MVC是如何运行的[2]: URL路由 ASP.NET MVC是如何运行的[3]: Controller的激活 ASP.NET MVC是如何运行的[4]: Action的执行 二.URL 路由 ASP.NET的路由系统:URL与物理文件的分离 ASP.NET的路

《Artech的ASP.NET系列》系列技术文章整理收藏

<Artech的ASP.NET系列>系列技术文章整理收藏 1浅谈ASP.NET的Postback 2ASP.NET:创建Linked ValidationSummary, 深入理解ASP.NET的Validation 3深入剖析ASP.NET的编译原理之一:动态编译(Dynamical Compilation) 4深入剖析ASP.NET的编译原理之二:预编译(Precompilation) 5ASP.NET Process Model之一:IIS 和 ASP.NET ISAPI 6ASP.NE

MVC+EF 理解和实现仓储模式和工作单元模式

MVC+EF 理解和实现仓储模式和工作单元模式 原文:Understanding Repository and Unit of Work Pattern and Implementing Generic Repository in ASP.NET MVC using Entity Framework 文章介绍 在这篇文章中,我们试着来理解Repository(下文简称仓储)和Unit of Work(下文简称工作单元)模式.同时我们使用ASP.NET MVC和Entity Framework 搭

2.angular MVC

AngularJs的MVC全部借助于$scope(作用域)实现 1.ng指令 <!doctype html> <html ng-app> <head> <meta charset="utf-8"> </head> <body> <div ng-controller="CommonController"> <div ng-controller="Controller1&

ASP.NET MVC+EF框架+EasyUI实现权限管理系列

http://www.cnblogs.com/hanyinglong/archive/2013/03/22/2976478.html ASP.NET MVC+EF框架+EasyUI实现权限管理系列之开篇 前言:博客又有一段时间没有更新了,心里感觉这段时间空空的,好像什么都没有学下,所以就想写博客,所以就有了这个系列,这里当然也要感谢大家了,因这个 项目我已经上传了,得到了很多网友的评价,也有好多人发邮件给我说这个框架容易出现问题,不能访问,这也是支持我写这个系列的动力,我将这个项目写成一个 系列

NET MVC

NET MVC 1.为 Action 标注 Attribute 限制访问 public class HomeController : Controller { [HttpPost] public ActionResult Index() { return View(); } } 那么该 Index 的 Action 就只能够通过 Post 方法请求,其它例如 Get 方法请求则响应 404. 2.设置 View 所使用的 Model 假设有 Person 类. 则 Controll 代码: pu

MVC——studying

        今天把MVC学习了一下,学习主要是从两个方面入手的,一个是基础知识的学习,另一个方面是从demo方面来学习了,通过写一个简单的demo来认识一个知识,在实践中学到更多的知识.学习的时候从这四个方面开始入手的:         ①什么是 ②什么时候用 ③怎么用 ④优缺点 一.什么是MVC         MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑.数据.界面显