<!-- (必选)加载 Mock --> <script src="http://mockjs.com/dist/mock.js"></script> <script> // 使用 Mock var data = Mock.mock({ 'list|1-10': [{ 'id|+1': 1 }] }); $('<pre>').text(JSON.stringify(data, null, 4)) .appendTo('body') </script>
返回值:
{ "list": [ { "id": 1 }, { "id": 2 }, { "id": 3 } ] }
配置模拟数据:
Mock.mock('http://g.cn', { 'name' : '@name', 'age|1-100': 100, 'color' : '@color' });
发送Ajax请求:
$.ajax({ url: 'http://g.cn', dataType:'json' }).done(function(data, status, xhr){ console.log( JSON.stringify(data, null, 4) ) });
返回数据:
// 结果1 { "name": "Elizabeth Hall", "age": 91, "color": "#0e64ea" } // 结果2 { "name": "Michael Taylor", "age": 61, "color": "#081086" }
// 安装 npm install mockjs // 使用 var Mock = require('mockjs'); var data = Mock.mock({ 'list|1-10': [{ 'id|+1': 1 }] }); console.log(JSON.stringify(data, null, 4))
<!-- 引用 --> <script src="http://mockjs.com/dist/mock-min.js"></script> <script src="http://cdn.staticfile.org/angular.js/1.3.0-beta.13/angular.min.js"></script> <!-- 兼容angular (mock.js默认不兼容angular,需额外引用兼容包)--> <script src="./src/mock.angular.js"></script> <!-- 模拟数据 --> <script src="./mockData.js"></script> <!-- 使用 --> <script> (function() { (function() { var app; app = angular.module('app', []); //使用mockjax方法覆盖Ajax请求 Mock.mockjax(app); return app.controller('appCtrl', function($scope, $http) { var box; box = $scope.box = []; $scope.get = function() { $http({ url: 'http://www.baidu.com', method: 'POST', params: {a: 1}, data : {b:1} }).success(function(data) { return box.push(data); }); $http({ url: 'http://baidu.com' }).success(function(data) { console.log(data); }); }; return $scope.get(); }); })(); }).call(this); </script>
Mock.mock('http://www.baidu.com', { 'name': '@name()', 'age|1-100': 100, 'color': '@color' });
Mock.js 的语法规范包括两部分:
数据模板中的每个属性由 3 部分构成:属性名、生成规则、属性值:
// 属性名 name // 生成规则 rule // 属性值 value 'name|rule': value
生成规则 有 7 种格式:
'name|min-max': value
'name|count': value
'name|min-max.dmin-dmax': value
'name|min-max.dcount': value
'name|count.dmin-dmax': value
'name|count.dcount': value
'name|+step': value
@占位符
。 1. 属性值是字符串 String
2. 属性值是数字 Number
'name|1-100.1-10': 100 生成一个浮点数,整数部分大于等于 1、小于等于 100,小数部分保留 1 到 10 位。
{ 'number1|1-100.1-10': 1, 'number2|123.1-10': 1, 'number3|123.3': 1, 'number4|123.10': 1.123 } // => { "number1": 12.92, "number2": 123.51, "number3": 123.777, "number4": 123.1231091814 }
3. 属性值是布尔型 Boolean
4. 属性值是对象 Object
5. 属性值是数组 Array
6. 属性值是数组 Function
'name': function(){} 执行函数 function(){},取其返回值作为最终的属性值,上下文为 'name' 所在的对象。
占位符 只是在属性值字符串中占个位置,并不出现在最终的属性值中。占位符 的格式为:
@占位符 @占位符(参数 [, 参数])
占位符 会优先引用 数据模板 中的属性
{ name: { first: '@FIRST', middle: '@FIRST', last: '@LAST', full: '@first @middle @last' } } // => { "name": { "first": "Charles", "middle": "Brenda", "last": "Lopez", "full": "Charles Brenda Lopez" } }
根据数据模板生成模拟数据。
参数的含义和默认值如下所示:
覆盖(拦截) Ajax 请求,目前内置支持 jQuery、Zepto、KISSY。
Mock.Random 是一个工具类,用于生成各种随机数据。Mock.Random 的方法在数据模板中称为“占位符”,引用格式为 @占位符(参数 [, 参数]) 。
基于 Handlebars、Mustache 的 HTML 模板生成模拟数据。
方法使用详情请参考 mock.js文档
演示: mock-demo
演示: mock-angular-demo
参考: mock.js
源码: mock-angular