Git Product home page Git Product logo

mock's People

Contributors

afc163 avatar alvarto avatar bitdeli-chef avatar nuysoft avatar taberh avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

mock's Issues

Mock.toJSONSchema( template )

规则映射

rule String Number Boolean Object Array Function RegExp
min
max
dmin
dmax
step

Mock.js规则控制最外层结构的问题

客户描述

新版本提供了两种类型的返回格式:对象、数组。
对于数组,希望返回的是一个数组对象,且能够让mock生成多个项。
但是设定了返回类型为数组,且设定了响应参数后,生成的数据(数组对象),长度一直是1。
是否有什么方式可以让其随机生成不同长度的数组对象?

个人分析

最外层比较特殊,这一块儿请@墨智 老师看看把,上次我们聊到virtual root类似的实现是否可以解决最外层MOCK规则控制的问题呢?

就目前而言,Mock.js并没有对最外层数据提供控制的方式。

对备选元素 'pick|1': [] 也需要解析,而不是选取一个原样返回

例如,在下面的 数据模板 中,备选元素 中仍然含有 占位符:

{
    'pick|1': [{
            url: '@URL'
            method: 'GET'
        }, {
            url: '@URL'
            method: 'POST'
        }, {
            url: '@URL'
            method: 'HEAD'
        }, {
            url: '@URL'
            method: 'DELETE'
        }
    ]
}

注意:

  1. 如果对备选元素不做解析,则返回的是备选元素之一
  2. 如果对备选元素进行解析,则会返回备选元素之一的副本

mock有没有延迟返回?

ajax请求,肯定有时延。而mock却是立刻返回结果,还是不够好。有延时返回的配置吗?

0.1.1版本MockJS出现Mock错误

// 错误样本,报错:RangeError: Maximum call stack size exceeded

var data = ({"msg":1,"hostName":"newbpfe6.vm.kgb.cm3","code":"200","result":{"totalItem":"14","toPage":"1","pageSize":"200","items|10":[{"adGroupDTO":{"nsMaxPriceGtLimitPrice":1,"adGroupId|+1":10000,"createTime":"20140310172955","onlyUpdateNsMaxPrice":1,"outsideItemPrice":"30000.00","outsideItemExpireTime":"20500101000000","defaultPrice":"5","plState":1,"redirectState":1,"outsideItemNumId":"36763870637","nonsearchState":"1","customerId":"1106887486","lastSyncDate":1,"displayOnlineState":"1","linkUrl":"http://item.taobao.com/item.htm?id=36763870637","title":"@title","outsideKey":1,"garbageState":1,"displayDefaultPrice":"0.05","campaignId|1000-9999":"13582395","properties":1,"outsideItemStrId":1,"nonsearchIsDefaultPrice":"0","adgroupType":1,"lastUpdateTime":"20140310172955","imgUrl":"http://gtms01.alicdn.com/tps/i1/T1icQqFipbXXaKKqDm-70-70.jpg","limitPrice":1,"onlineState":"1","nick":1,"extension":1,"nonsearchMaxPrice":"100","offlineType":"0","categoryId|10000-99999":"16 50010850","isCatMatchOnline":1,"extStatus":1,"reason":1,"outsideItemState":"1"},"campaignTitle":"定向推广用-千万别改设置平台!!!2!!","displayOnlineState":"1","fullImgUrl":"http://img.taobaocdn.com/bao/uploaded/i2/T1Wd0sFBVeXXXXXXXX_!!0-item_pic.jpg","adGroupCreativeState":"1","catPathNames":1}]}})

Mock.mock(data);

Bower.json缺少main字段

当我使用grunt-wiredep插件自动将所有已安装的bower包引用到HMTL页面时,会报错,提示mockjs未被注入到HTML中,经测试发现是因为MockJs的bower.json的main字段没有设置所导致的。

解决方法:

  1. 在bower.json中加入"main": ["mock.js"]
  2. 在github的Mock仓库创建新的tag(release).

支持返回中文段落

现在sentence返回的都是些英文字符, 是否可以支持返回中文字符, 这样在测试某些页面布局时比较好办.

无法引用数据模板中的属性

例如下面的数据模板:

{
    name: '@first @last',
    first: 'fffff',
    last: 'lllll'
}

生成的数据应该是:

{
    name: 'fffff lllll',
    first: 'fffff',
    last: 'lllll'
}

而实际上生成的是:

{
    name: 'William Garcia',
    first: 'fffff',
    last: 'lllll'
}

即没有引用数据模板中的属性 firstlast,仍然通过 Random.first()Random.last() 生成了模拟数据。

补充

  1. 如果属性 firstlastname 之前,则会引用,生成的数据符合期望,如下所示:

    {
        first: 'fffff',
        last: 'lllll',
        name: '@first @last'
    }
  2. 如果引用的属性尚不存在,而且在 Random 中也没有同名方法,则会报错。

Mock.Random.dateImage() dont work in nodejs

  app.get('/foo', function (req, res) {
    var data = Mock.mock({
      "thumb": Mock.random.dataImage('200x100', 'test')
    });
    res.jsonp(data);
  });
  // mockjs: v0.1.4
  // nodejs: v0.10.28

如何生成一个有数量范围的随机数组

按照语法规范'name|min-max': value 或者 'name|count': value 生成的东西都是重复值 ,按照Random.range(start, stop, step)生成又都是规律 , 请问如我要生成一个如标题的数组该怎么办啊!

能不能增加模拟ajax请求延时响应?

有很多ajax请求都是需要有一些界面的交互过程的,比如显示loading提示等,但是现在是没有任何延迟,以至于前期开发过程根本就看不到这些效果,很难调试。

我在我的fork库里面做了些修改,这样调用ajax的响应方法时,就可以延迟几秒,可以更好的模拟真实的网络环境,秒数是一个范围内的随机数:
https://github.com/luozhihua/Mock/blob/master/src/mockjax.js#L52

函数属性应该放到最后解析和执行

例如下面的例子,函数 xfn2xfn4 都依赖于属性 x,但是 xfn2x 之前,导致在执行 xfn2 无法找到 x,最终 xfn2 的值为 null。

var tpl = {
    xfn2: function() {
        return this.x * 2
    },
    x: 1,
    xfn4: function() {
        return this.x * 4
    }
}
// =>
{
    "xfn2": null,
    "x": 1,
    "xfn4": 4
}

解决方案

一种简单的方案是,把所有的函数属性都放在最后执行,可以应对大部分的场景。

严格来说,这么做并不能覆盖所有场景,例如其中一个函数属性依赖了另一个函数属性。

更新日志

2013.7.12

  1. Mock.mock(rurl, template) 的参数 rurl 可以是字符串或正则。
  2. 把产生随机元数据的接口封装到 Mock.Random 中。
  3. 增加对日期的格式化。
  4. 增加占位符 @img@paragraph@Sentence@word@FIRST@last@name@Domain、@EMAIL、@ip@id
  5. 支持嵌套的占位符,例如 @IMG(@AD_SIZE)
  6. 支持把普通属性当作占位符使用,例如 @IMG(@size)

2013.7.18

  1. 增加占位符 @color
  2. 完善对占位符的解析,过滤掉 #%&()?/.
  3. 对“支持的占位符”分组。

2013.7.31

  1. 50% 基于客户端模板生成模拟数据。

2013.8.2

  1. 60% 基于客户端模板生成模拟数据。
  2. 增加测试用例 test/mock4tpl-node.js,参考自 http://handlebarsjs.com/。

2013.8.7

  1. 75% 基于客户端模板生成模拟数据。
  2. 完善测试用例 test/mock4tpl-node.js
  3. 重构文件和目录结构,把代码模块化。
  4. 参考 Handlebars.js,引入 Jison 生成模板解析器。

2013.8.11

  1. 80% 基于客户端模板生成模拟数据。
  2. 完善针对 KISSY XTemplate 的测试用例 test/mock4tpl-xtpl-node.js
  3. Mock4Tpl 支持 Partials。
  4. Mock 支持转义 @。
  5. 更新 README.md,增加对 Mock4Tpl 的说明。
  6. 完善 demo
  7. 减少 Mock、Mock4Tpl 暴漏的 API。

2013.8.21

  1. 100% 基于客户端模板生成模拟数据,支持 KISSY XTemplate。
  2. 调整文件结构。

能否直接返回批量数组数据而不是一个对象?

因为项目居于backbone开发的,所以关于backbone.Collection的mock数据比较头疼。


[
    { ... },
    { ... }
    ...
]

目前mock似乎不支持上面数据结构的输出格式,只能手动一条一条添加,还是说我不知道?

想了下,可以换种方法:


var data = mock.mock({'data|5-10': [{ ... }]});
mock.mock(/url/, data.data);

mock没有阻止ajax请求

预览地址 : mock-demo

    <script>
        Mock.mock('mockjs.json', {
            'list|1-10':[{
                'id|+1':1,
                'email':'@EMAIL'
            }]
        });

        $.ajax({
            url: 'mockjs.json',
        }).done(function(data, status, xhr){
            console.dir(
                JSON.stringify(data, null, 4)
            )
        })
    </script>

mock没有阻止ajax请求,报错!请问这是为啥?

能否让mock规则支持运算?

1、能否让mock规则支持运算?
可以实现简单的加减乘除,这样就可以配合动态参数,模拟出比较真实地接口行为。

2、能否获取当前数组元素的index?比如用@INDEX来表示
虽然可以通过增加一个自增类型的字段来辅助实现(例如自增id,可以用@id来获取index),不过该辅助字段并非接口真实所用的字段。

是不是相同的url返回的数据,都是相同的呢

Mock.mock(//inc/Task_edit.htm?id=/, {
id: "",
name: Random.string("upper", 20),
subName: Random.string("upper", 20),
userRange: Random.natural(0, 1),
status: Random.natural(0, 1),
description: Random.string("upper", 50),
url: "",
finish: 0,
award: 0,
pic: "",
showBtn: Random.natural(0, 1),
activeBtnName: "签到",
finishBtnName: "已签到",
orderNo: "1",
recommend: Random.natural(0, 1),
platCodes: Random.range(1, 7)
});

这样写,我每次拿到的数据都是一样的,没有变

能否提供数据验证功能?

比如 提供这样的形式:
Mock.validate( mock_template, data ).
这个功能很重要,
这个如果没有该功能,则无法形成开发和测试的闭环。

Mock.mock(rurl, rtype, template)

目前 Mock.mock() 支持的方法签名有:

  • Mock.mock(template)
  • Mock.mock(rurl, template)

@chongzhi 建议增加一个参数 rtype,以区分相同 URL 但是请求类型(GET、POST、PUSH、DELETE等)不同的场景,即支持 RESTFul 风格的 API:

  • Mock.mock(rurl, rtype, template)

能否添加函数或动态数据功能?

http://www.json-generator.com/

现在我这边目前又遇到一个问题,


    var names = ["福州", "泉州", "厦门"];
    var area = {
        '福州': ['鼓楼区', '台江区', '马尾', '仓山'], 
        '泉州': ['丰泽区', '泉港区', '惠安县', '安溪县'], 
        '厦门': ['海沧区', '湖里区', '集美区', '同安区']
    };

        "data|20-30": [{
            "_id|+1": 1,
            "city_name|1": names,
            "name|1": area["@city_name"]
        }]

name为undifine

我在Handle对象添加了一个"function"处理函数:


Handle.extend({
    Random: Random,
    ......
    "function": function(options) {
        return options.template.apply(this, [options.obj]);
    }
});

这边还是有两个问题:

  1. 执行函数上下文没有考虑进去。
  2. 执行顺序(目前函数必须写在被依赖的数据后面)

使用时:


       "data|20-30": [{
            "_id|+1": 1,
            "city_name|1": names,
            "name": function(obj) {
                console.log(this.Random.pick(area[obj.city_name]));
            }
        }]

占位符语法特性不完整

引言

Mock.js 语法分为两类,「模板」与「占位符」。模板语法的设计相较占位符更加简洁友好,但有一个缺陷即其语法限制了模板方式只能构造 key - value 形式的数据片段。相对的,占位符语法则更加严谨。在我的理解中,模板方式是占位符方式的简化,模板方式能构造的数据是占位符方式能构造的数据的子集。

问题

在现在的版本(1.5)中,所有使用模板语法能构造的数据片段都可以使用占位符方式构造,除了:

  1. 重复元素的数组:"name|count": [{}, {} ...], "name|min-max": [{}, {} ...]
  2. 重复内容的字符串:"name|count": "value", "name|min-max": "value"

这意味着,上面这些类型的数据片段,不能独立于 key(name) 单独存在。这导致在两种情况下现有的语法无法构建所需的数据:

  • 该数据片段即为 JSON 根节点

    [{}, {}, {}, ...]
    
    "★★★★★"
    
  • 该数据片断为数组元素

    {
     "array": [
        [{}, {}, {}, ...]
        ...
      ]
    }
    
    {
      "array": ["★★★", "★★★★★", ...]
    }
    

其中,「重复元素的数组作为 JSON 根节点」是 Restful API 风格对列表资源的约定,被广泛采用——这里有一个相关的 issue: #6——无法构建此类数据也是我目前真正遇到问题。其他情况在目前的实践中几乎不会遇到,在此提出是出于对占位符语法特性完整性的考虑。

提议

这里我冒昧提出一个可行的解决方案,即增加以下占位符语法:

Basics

["@ARRAY", item, count], ["@ARRAY", item, min, max]

["@ARRAY", {}, 3] 
//=>
[{}, {}, {}]

值得指出的是,这里将占位符的形式从单纯的字符串扩展到了一个特定格式的对象。

Helpers

"@REPEAT('string', count)", "@REPEAT('string', min, max)"

{
  "array|10": ["@REPEAT('★', 1, 5)"]
}
//=>
{
  "array": ["★★★", "★★★★★", ...]
}

Mock 规划

  1. √ 暴露产生随机元数据的接口。
  2. 重构项目结构,设计更好用的 API。
  3. √ 基于客户端模板生成模拟数据。
  4. 50% 提供随机图片生成服务。
  5. 30% 提供自定义模板数据的保存和访问服务。
  6. 提供真正的随机数。
  7. 支持 UUID、SHA、MD5。

TODO

  1. √ Handlebars vs XTemplate,测试、语法
  2. √ 占位符:支持转义 @
  3. 50% 在测试用例增加期望的断言个数
  4. {{#}} {{^}} 的冲突
  5. 嵌套占位符:支持设置参数
  6. √ 嵌套占位符:支持为不同路径设置不同的占位符
  7. 增加对 URL 中参数 mock 的判断
  8. √ 文档:如何扩展占位符

如何继续发送ajax请求

mockjs很好用,大赞!

使用过程,遇到以下场景,需根据头部决定是否拦截请求

因为接口与前端并行开发,某些接口完成后,不再需要mock data,直接发送请求。

请问mockjs是否支持该场景?应该怎么实现?

  Mock.mock(/index\.html/, function(options){
        var headers = options.headers, moduleName = headers["Module"];
        if(moduleName === "mainRecommend"){
            return mockMainRecommend();
        }else if (moduleName === "mainTop"){
            return mockMainList();
        }else{
            //继续发送ajax请求
        }
}

带有自定义函数的复杂JSON,使用Mock.mock时报错

请看看,某位客户的JSON,通过RAP生成了模板后,在Mock.mock时报错。

{
    "extra": {
        "page": 1,
        "pagesize": 20,
        "totalpage": 1,
        "total": 10
    },
    "message": "\u64cd\u4f5c\u6210\u529f",
    "result": true,
    "code": 99999999,
    "data|2": [{
        "designer_id": function() {
            var window = function() {
                return this;
            } ();
            function geneVal(key) {
                var o = __rap__context__[key];
                var arr = o.arr;
                return arr[o.index++%arr.length];
            }
            if (!window.__rap__context__) {
                window.__rap__context__ = {};
            }
            var orderCmd = "$order(1,1)";
            var orderArr = eval('[' + orderCmd.substring(7, orderCmd.length - 1) + ']');
            var key = '10000';
            if (!__rap__context__[key]) {
                __rap__context__[key] = {
                    arr: orderArr,
                    index: 0
                };
            }
            return geneVal(key);
        },
        "scene_name": function() {
            var window = function() {
                return this;
            } ();
            function geneVal(key) {
                var o = __rap__context__[key];
                var arr = o.arr;
                return arr[o.index++%arr.length];
            }
            if (!window.__rap__context__) {
                window.__rap__context__ = {};
            }
            var orderCmd = "$order(\"\u5546\u54c1\u6548\u679c\u6d4b\u8bd5\",\"\u5546\u54c1\u6548\u679c\u6d4b\u8bd5\")";
            var orderArr = eval('[' + orderCmd.substring(7, orderCmd.length - 1) + ']');
            var key = '10001';
            if (!__rap__context__[key]) {
                __rap__context__[key] = {
                    arr: orderArr,
                    index: 0
                };
            }
            return geneVal(key);
        },
        "in_shelf": function() {
            var window = function() {
                return this;
            } ();
            function geneVal(key) {
                var o = __rap__context__[key];
                var arr = o.arr;
                return arr[o.index++%arr.length];
            }
            if (!window.__rap__context__) {
                window.__rap__context__ = {};
            }
            var orderCmd = "$order(1,1)";
            var orderArr = eval('[' + orderCmd.substring(7, orderCmd.length - 1) + ']');
            var key = '10002';
            if (!__rap__context__[key]) {
                __rap__context__[key] = {
                    arr: orderArr,
                    index: 0
                };
            }
            return geneVal(key);
        },
        "room_args": function() {
            var window = function() {
                return this;
            } ();
            function geneVal(key) {
                var o = __rap__context__[key];
                var arr = o.arr;
                return arr[o.index++%arr.length];
            }
            if (!window.__rap__context__) {
                window.__rap__context__ = {};
            }
            var orderCmd = "$order(\"{\"1\":{\"id\":1,\"FOVx\":65.97752238227275,\"FOVy\":40.117807,\"Position\":{\"x\":3.368628,\"y\":-2.995035,\"z\":1.4},\"Quaternion\":{\"x\":0.722453,\"y\":0.001152,\"z\":-0.001102,\"w\":-0.691419},\"angleX\":107.922626,\"angleY\":45.132237,\"dragAngleX\":107.922626,\"dragAngleY\":45.132237,\"isPanorama\":true,\"dragAngleLeft\":52,\"dragAngleRight\":33,\"dragAngleUp\":22,\"dragAngleDown\":22,\"exposureBias\":1,\"QuaternionNew\":{\"x\":-0.7155519334704465,\"y\":-0.08015251829528554,\"z\":0.07724920278482071,\"w\":0.6896329204632993}},\"room\":{\"sizeX\":13.4,\"sizeY\":7.2,\"sizeZ\":3.2,\"isPanorama\":true}}\",\"{\"1\":{\"id\":1,\"FOVx\":65.97752238227275,\"FOVy\":40.117807,\"Position\":{\"x\":3.368628,\"y\":-2.995035,\"z\":1.4},\"Quaternion\":{\"x\":0.722453,\"y\":0.001152,\"z\":-0.001102,\"w\":-0.691419},\"angleX\":107.922626,\"angleY\":45.132237,\"dragAngleX\":107.922626,\"dragAngleY\":45.132237,\"isPanorama\":true,\"dragAngleLeft\":52,\"dragAngleRight\":33,\"dragAngleUp\":22,\"dragAngleDown\":22,\"exposureBias\":1,\"QuaternionNew\":{\"x\":-0.7155519334704465,\"y\":-0.08015251829528554,\"z\":0.07724920278482071,\"w\":0.6896329204632993}},\"room\":{\"sizeX\":13.4,\"sizeY\":7.2,\"sizeZ\":3.2,\"isPanorama\":true}}\")";
            var orderArr = eval('[' + orderCmd.substring(7, orderCmd.length - 1) + ']');
            var key = '10003';
            if (!__rap__context__[key]) {
                __rap__context__[key] = {
                    arr: orderArr,
                    index: 0
                };
            }
            return geneVal(key);
        },
        "style_id": function() {
            var window = function() {
                return this;
            } ();
            function geneVal(key) {
                var o = __rap__context__[key];
                var arr = o.arr;
                return arr[o.index++%arr.length];
            }
            if (!window.__rap__context__) {
                window.__rap__context__ = {};
            }
            var orderCmd = "$order(1,1)";
            var orderArr = eval('[' + orderCmd.substring(7, orderCmd.length - 1) + ']');
            var key = '10004';
            if (!__rap__context__[key]) {
                __rap__context__[key] = {
                    arr: orderArr,
                    index: 0
                };
            }
            return geneVal(key);
        },
        "creator": function() {
            var window = function() {
                return this;
            } ();
            function geneVal(key) {
                var o = __rap__context__[key];
                var arr = o.arr;
                return arr[o.index++%arr.length];
            }
            if (!window.__rap__context__) {
                window.__rap__context__ = {};
            }
            var orderCmd = "$order(\"\",\"\")";
            var orderArr = eval('[' + orderCmd.substring(7, orderCmd.length - 1) + ']');
            var key = '10005';
            if (!__rap__context__[key]) {
                __rap__context__[key] = {
                    arr: orderArr,
                    index: 0
                };
            }
            return geneVal(key);
        },
        "pics_path": function() {
            var window = function() {
                return this;
            } ();
            function geneVal(key) {
                var o = __rap__context__[key];
                var arr = o.arr;
                return arr[o.index++%arr.length];
            }
            if (!window.__rap__context__) {
                window.__rap__context__ = {};
            }
            var orderCmd = "$order(\"\",\"\")";
            var orderArr = eval('[' + orderCmd.substring(7, orderCmd.length - 1) + ']');
            var key = '10006';
            if (!__rap__context__[key]) {
                __rap__context__[key] = {
                    arr: orderArr,
                    index: 0
                };
            }
            return geneVal(key);
        },
        "user_id": function() {
            var window = function() {
                return this;
            } ();
            function geneVal(key) {
                var o = __rap__context__[key];
                var arr = o.arr;
                return arr[o.index++%arr.length];
            }
            if (!window.__rap__context__) {
                window.__rap__context__ = {};
            }
            var orderCmd = "$order(0,0)";
            var orderArr = eval('[' + orderCmd.substring(7, orderCmd.length - 1) + ']');
            var key = '10007';
            if (!__rap__context__[key]) {
                __rap__context__[key] = {
                    arr: orderArr,
                    index: 0
                };
            }
            return geneVal(key);
        },
        "adv_bottom": function() {
            var window = function() {
                return this;
            } ();
            function geneVal(key) {
                var o = __rap__context__[key];
                var arr = o.arr;
                return arr[o.index++%arr.length];
            }
            if (!window.__rap__context__) {
                window.__rap__context__ = {};
            }
            var orderCmd = "$order(\"\",\"\")";
            var orderArr = eval('[' + orderCmd.substring(7, orderCmd.length - 1) + ']');
            var key = '10008';
            if (!__rap__context__[key]) {
                __rap__context__[key] = {
                    arr: orderArr,
                    index: 0
                };
            }
            return geneVal(key);
        },
        "haspics": function() {
            var window = function() {
                return this;
            } ();
            function geneVal(key) {
                var o = __rap__context__[key];
                var arr = o.arr;
                return arr[o.index++%arr.length];
            }
            if (!window.__rap__context__) {
                window.__rap__context__ = {};
            }
            var orderCmd = "$order(0,0)";
            var orderArr = eval('[' + orderCmd.substring(7, orderCmd.length - 1) + ']');
            var key = '10009';
            if (!__rap__context__[key]) {
                __rap__context__[key] = {
                    arr: orderArr,
                    index: 0
                };
            }
            return geneVal(key);
        },
        "isrecommend": function() {
            var window = function() {
                return this;
            } ();
            function geneVal(key) {
                var o = __rap__context__[key];
                var arr = o.arr;
                return arr[o.index++%arr.length];
            }
            if (!window.__rap__context__) {
                window.__rap__context__ = {};
            }
            var orderCmd = "$order(0,0)";
            var orderArr = eval('[' + orderCmd.substring(7, orderCmd.length - 1) + ']');
            var key = '10010';
            if (!__rap__context__[key]) {
                __rap__context__[key] = {
                    arr: orderArr,
                    index: 0
                };
            }
            return geneVal(key);
        },
        "root_id": function() {
            var window = function() {
                return this;
            } ();
            function geneVal(key) {
                var o = __rap__context__[key];
                var arr = o.arr;
                return arr[o.index++%arr.length];
            }
            if (!window.__rap__context__) {
                window.__rap__context__ = {};
            }
            var orderCmd = "$order(0,0)";
            var orderArr = eval('[' + orderCmd.substring(7, orderCmd.length - 1) + ']');
            var key = '10011';
            if (!__rap__context__[key]) {
                __rap__context__[key] = {
                    arr: orderArr,
                    index: 0
                };
            }
            return geneVal(key);
        },
        "desc": function() {
            var window = function() {
                return this;
            } ();
            function geneVal(key) {
                var o = __rap__context__[key];
                var arr = o.arr;
                return arr[o.index++%arr.length];
            }
            if (!window.__rap__context__) {
                window.__rap__context__ = {};
            }
            var orderCmd = "$order(\"<p>12<\/p>\",\"<p>12<\/p>\")";
            var orderArr = eval('[' + orderCmd.substring(7, orderCmd.length - 1) + ']');
            var key = '10012';
            if (!__rap__context__[key]) {
                __rap__context__[key] = {
                    arr: orderArr,
                    index: 0
                };
            }
            return geneVal(key);
        },
        "model_info": function() {
            var window = function() {
                return this;
            } ();
            function geneVal(key) {
                var o = __rap__context__[key];
                var arr = o.arr;
                return arr[o.index++%arr.length];
            }
            if (!window.__rap__context__) {
                window.__rap__context__ = {};
            }
            var orderCmd = "$order(\"[{\"id\":157,\"position\":{\"x\":0.8290811648136097,\"y\":2.773665489427823,\"z\":0.3800000000000001},\"rotation\":{\"x\":0,\"y\":0,\"z\":0.06920367457323079},\"quaternion\":{\"x\":0,\"y\":0,\"z\":0.034594932977462294,\"w\":0.9994014161548326}},{\"id\":37,\"position\":{\"x\":3.211819238806907,\"y\":0.8361365252640024,\"z\":0},\"rotation\":{\"x\":0,\"y\":0,\"z\":-1.5207963275941434},\"quaternion\":{\"x\":0,\"y\":0,\"z\":-0.6892099939523402,\"w\":0.72456164971396}},{\"id\":37,\"position\":{\"x\":2.1239044442716355,\"y\":0.7270494947133531,\"z\":0},\"rotation\":{\"x\":0,\"y\":0,\"z\":1.809203666420212},\"quaternion\":{\"x\":0,\"y\":0,\"z\":0.7861791507359865,\"w\":0.6179986593416227}},{\"id\":64,\"position\":{\"x\":1.2854428247993726,\"y\":2.1088075631936727,\"z\":0},\"rotation\":{\"x\":0,\"y\":0,\"z\":-1.5707963267948963},\"quaternion\":{\"x\":0,\"y\":0,\"z\":-0.7071067811865475,\"w\":0.7071067811865477}},{\"id\":160,\"position\":{\"x\":2.5180308423769353,\"y\":1.7037948087943773,\"z\":0},\"rotation\":{\"x\":0,\"y\":0,\"z\":-0.0007963267961379878},\"quaternion\":{\"x\":0,\"y\":0,\"z\":-0.00039816338754858187,\"w\":0.9999999207329553}},{\"id\":110,\"position\":{\"x\":4.363383838660308,\"y\":1.8446611590397413,\"z\":0},\"rotation\":{\"x\":0,\"y\":0,\"z\":-0.6207963216517365},\"quaternion\":{\"x\":0,\"y\":0,\"z\":-0.30543779417332834,\"w\":0.9522120320026057}},{\"id\":150,\"position\":{\"x\":0.38423754919784114,\"y\":2.8821267664956207,\"z\":0},\"rotation\":{\"x\":0,\"y\":0,\"z\":0.12920367633817348},\"quaternion\":{\"x\":0,\"y\":0,\"z\":0.06455691268644366,\"w\":0.9979140268702484}},{\"id\":179,\"position\":{\"x\":1.6566218773145178,\"y\":0.6982262358268683,\"z\":0},\"rotation\":{\"x\":0,\"y\":0,\"z\":-0.3207963322474933},\"quaternion\":{\"x\":0,\"y\":0,\"z\":-0.15971127443568203,\"w\":0.9871637700088726}},{\"id\":116,\"position\":{\"x\":0.7876551977953973,\"y\":1.0447069865075296,\"z\":0},\"rotation\":{\"x\":0,\"y\":0,\"z\":0.4692036732051035},\"quaternion\":{\"x\":0,\"y\":0,\"z\":0.2324557474516606,\"w\":0.9726069737960394}},{\"id\":123,\"position\":{\"x\":0.2772290873919028,\"y\":0.450067813046513,\"z\":0},\"rotation\":{\"x\":0,\"y\":0,\"z\":0.9792036732051036},\"quaternion\":{\"x\":0,\"y\":0,\"z\":0.47027453822665294,\"w\":0.8825201746678136}}]\",\"[{\"id\":157,\"position\":{\"x\":0.8290811648136097,\"y\":2.773665489427823,\"z\":0.3800000000000001},\"rotation\":{\"x\":0,\"y\":0,\"z\":0.06920367457323079},\"quaternion\":{\"x\":0,\"y\":0,\"z\":0.034594932977462294,\"w\":0.9994014161548326}},{\"id\":37,\"position\":{\"x\":3.211819238806907,\"y\":0.8361365252640024,\"z\":0},\"rotation\":{\"x\":0,\"y\":0,\"z\":-1.5207963275941434},\"quaternion\":{\"x\":0,\"y\":0,\"z\":-0.6892099939523402,\"w\":0.72456164971396}},{\"id\":37,\"position\":{\"x\":2.1239044442716355,\"y\":0.7270494947133531,\"z\":0},\"rotation\":{\"x\":0,\"y\":0,\"z\":1.809203666420212},\"quaternion\":{\"x\":0,\"y\":0,\"z\":0.7861791507359865,\"w\":0.6179986593416227}},{\"id\":64,\"position\":{\"x\":1.2854428247993726,\"y\":2.1088075631936727,\"z\":0},\"rotation\":{\"x\":0,\"y\":0,\"z\":-1.5707963267948963},\"quaternion\":{\"x\":0,\"y\":0,\"z\":-0.7071067811865475,\"w\":0.7071067811865477}},{\"id\":160,\"position\":{\"x\":2.5180308423769353,\"y\":1.7037948087943773,\"z\":0},\"rotation\":{\"x\":0,\"y\":0,\"z\":-0.0007963267961379878},\"quaternion\":{\"x\":0,\"y\":0,\"z\":-0.00039816338754858187,\"w\":0.9999999207329553}},{\"id\":110,\"position\":{\"x\":4.363383838660308,\"y\":1.8446611590397413,\"z\":0},\"rotation\":{\"x\":0,\"y\":0,\"z\":-0.6207963216517365},\"quaternion\":{\"x\":0,\"y\":0,\"z\":-0.30543779417332834,\"w\":0.9522120320026057}},{\"id\":150,\"position\":{\"x\":0.38423754919784114,\"y\":2.8821267664956207,\"z\":0},\"rotation\":{\"x\":0,\"y\":0,\"z\":0.12920367633817348},\"quaternion\":{\"x\":0,\"y\":0,\"z\":0.06455691268644366,\"w\":0.9979140268702484}},{\"id\":179,\"position\":{\"x\":1.6566218773145178,\"y\":0.6982262358268683,\"z\":0},\"rotation\":{\"x\":0,\"y\":0,\"z\":-0.3207963322474933},\"quaternion\":{\"x\":0,\"y\":0,\"z\":-0.15971127443568203,\"w\":0.9871637700088726}},{\"id\":116,\"position\":{\"x\":0.7876551977953973,\"y\":1.0447069865075296,\"z\":0},\"rotation\":{\"x\":0,\"y\":0,\"z\":0.4692036732051035},\"quaternion\":{\"x\":0,\"y\":0,\"z\":0.2324557474516606,\"w\":0.9726069737960394}},{\"id\":123,\"position\":{\"x\":0.2772290873919028,\"y\":0.450067813046513,\"z\":0},\"rotation\":{\"x\":0,\"y\":0,\"z\":0.9792036732051036},\"quaternion\":{\"x\":0,\"y\":0,\"z\":0.47027453822665294,\"w\":0.8825201746678136}}]\")";
            var orderArr = eval('[' + orderCmd.substring(7, orderCmd.length - 1) + ']');
            var key = '10013';
            if (!__rap__context__[key]) {
                __rap__context__[key] = {
                    arr: orderArr,
                    index: 0
                };
            }
            return geneVal(key);
        },
        "room_id": function() {
            var window = function() {
                return this;
            } ();
            function geneVal(key) {
                var o = __rap__context__[key];
                var arr = o.arr;
                return arr[o.index++%arr.length];
            }
            if (!window.__rap__context__) {
                window.__rap__context__ = {};
            }
            var orderCmd = "$order(188,188)";
            var orderArr = eval('[' + orderCmd.substring(7, orderCmd.length - 1) + ']');
            var key = '10014';
            if (!__rap__context__[key]) {
                __rap__context__[key] = {
                    arr: orderArr,
                    index: 0
                };
            }
            return geneVal(key);
        },
        "label_ids": function() {
            var window = function() {
                return this;
            } ();
            function geneVal(key) {
                var o = __rap__context__[key];
                var arr = o.arr;
                return arr[o.index++%arr.length];
            }
            if (!window.__rap__context__) {
                window.__rap__context__ = {};
            }
            var orderCmd = "$order(36,36)";
            var orderArr = eval('[' + orderCmd.substring(7, orderCmd.length - 1) + ']');
            var key = '10015';
            if (!__rap__context__[key]) {
                __rap__context__[key] = {
                    arr: orderArr,
                    index: 0
                };
            }
            return geneVal(key);
        },
        "displayorder": function() {
            var window = function() {
                return this;
            } ();
            function geneVal(key) {
                var o = __rap__context__[key];
                var arr = o.arr;
                return arr[o.index++%arr.length];
            }
            if (!window.__rap__context__) {
                window.__rap__context__ = {};
            }
            var orderCmd = "$order(0,0)";
            var orderArr = eval('[' + orderCmd.substring(7, orderCmd.length - 1) + ']');
            var key = '10016';
            if (!__rap__context__[key]) {
                __rap__context__[key] = {
                    arr: orderArr,
                    index: 0
                };
            }
            return geneVal(key);
        },
        "model_ids": function() {
            var window = function() {
                return this;
            } ();
            function geneVal(key) {
                var o = __rap__context__[key];
                var arr = o.arr;
                return arr[o.index++%arr.length];
            }
            if (!window.__rap__context__) {
                window.__rap__context__ = {};
            }
            var orderCmd = "$order(\"157,37,37,64,160,110,150,179,116,123\",\"157,37,37,64,160,110,150,179,116,123\")";
            var orderArr = eval('[' + orderCmd.substring(7, orderCmd.length - 1) + ']');
            var key = '10017';
            if (!__rap__context__[key]) {
                __rap__context__[key] = {
                    arr: orderArr,
                    index: 0
                };
            }
            return geneVal(key);
        },
        "style": function() {
            var window = function() {
                return this;
            } ();
            function geneVal(key) {
                var o = __rap__context__[key];
                var arr = o.arr;
                return arr[o.index++%arr.length];
            }
            if (!window.__rap__context__) {
                window.__rap__context__ = {};
            }
            var orderCmd = "$order(\"\u73b0\u4ee3\",\"\u73b0\u4ee3\")";
            var orderArr = eval('[' + orderCmd.substring(7, orderCmd.length - 1) + ']');
            var key = '10018';
            if (!__rap__context__[key]) {
                __rap__context__[key] = {
                    arr: orderArr,
                    index: 0
                };
            }
            return geneVal(key);
        },
        "updator": function() {
            var window = function() {
                return this;
            } ();
            function geneVal(key) {
                var o = __rap__context__[key];
                var arr = o.arr;
                return arr[o.index++%arr.length];
            }
            if (!window.__rap__context__) {
                window.__rap__context__ = {};
            }
            var orderCmd = "$order(\"\",\"\")";
            var orderArr = eval('[' + orderCmd.substring(7, orderCmd.length - 1) + ']');
            var key = '10019';
            if (!__rap__context__[key]) {
                __rap__context__[key] = {
                    arr: orderArr,
                    index: 0
                };
            }
            return geneVal(key);
        },
        "advert_text": function() {
            var window = function() {
                return this;
            } ();
            function geneVal(key) {
                var o = __rap__context__[key];
                var arr = o.arr;
                return arr[o.index++%arr.length];
            }
            if (!window.__rap__context__) {
                window.__rap__context__ = {};
            }
            var orderCmd = "$order(\"\",\"\")";
            var orderArr = eval('[' + orderCmd.substring(7, orderCmd.length - 1) + ']');
            var key = '10020';
            if (!__rap__context__[key]) {
                __rap__context__[key] = {
                    arr: orderArr,
                    index: 0
                };
            }
            return geneVal(key);
        },
        "brand_id": function() {
            var window = function() {
                return this;
            } ();
            function geneVal(key) {
                var o = __rap__context__[key];
                var arr = o.arr;
                return arr[o.index++%arr.length];
            }
            if (!window.__rap__context__) {
                window.__rap__context__ = {};
            }
            var orderCmd = "$order(1,1)";
            var orderArr = eval('[' + orderCmd.substring(7, orderCmd.length - 1) + ']');
            var key = '10021';
            if (!__rap__context__[key]) {
                __rap__context__[key] = {
                    arr: orderArr,
                    index: 0
                };
            }
            return geneVal(key);
        },
        "pic_resids": function() {
            var window = function() {
                return this;
            } ();
            function geneVal(key) {
                var o = __rap__context__[key];
                var arr = o.arr;
                return arr[o.index++%arr.length];
            }
            if (!window.__rap__context__) {
                window.__rap__context__ = {};
            }
            var orderCmd = "$order(\"\",\"\")";
            var orderArr = eval('[' + orderCmd.substring(7, orderCmd.length - 1) + ']');
            var key = '10022';
            if (!__rap__context__[key]) {
                __rap__context__[key] = {
                    arr: orderArr,
                    index: 0
                };
            }
            return geneVal(key);
        },
        "brand": function() {
            var window = function() {
                return this;
            } ();
            function geneVal(key) {
                var o = __rap__context__[key];
                var arr = o.arr;
                return arr[o.index++%arr.length];
            }
            if (!window.__rap__context__) {
                window.__rap__context__ = {};
            }
            var orderCmd = "$order(\"Carlhansen&son\",\"Carlhansen&son\")";
            var orderArr = eval('[' + orderCmd.substring(7, orderCmd.length - 1) + ']');
            var key = '10023';
            if (!__rap__context__[key]) {
                __rap__context__[key] = {
                    arr: orderArr,
                    index: 0
                };
            }
            return geneVal(key);
        },
        "owner_id": function() {
            var window = function() {
                return this;
            } ();
            function geneVal(key) {
                var o = __rap__context__[key];
                var arr = o.arr;
                return arr[o.index++%arr.length];
            }
            if (!window.__rap__context__) {
                window.__rap__context__ = {};
            }
            var orderCmd = "$order(0,0)";
            var orderArr = eval('[' + orderCmd.substring(7, orderCmd.length - 1) + ']');
            var key = '10024';
            if (!__rap__context__[key]) {
                __rap__context__[key] = {
                    arr: orderArr,
                    index: 0
                };
            }
            return geneVal(key);
        },
        "category": function() {
            var window = function() {
                return this;
            } ();
            function geneVal(key) {
                var o = __rap__context__[key];
                var arr = o.arr;
                return arr[o.index++%arr.length];
            }
            if (!window.__rap__context__) {
                window.__rap__context__ = {};
            }
            var orderCmd = "$order(\"\u5c55\u5385\",\"\u5c55\u5385\")";
            var orderArr = eval('[' + orderCmd.substring(7, orderCmd.length - 1) + ']');
            var key = '10025';
            if (!__rap__context__[key]) {
                __rap__context__[key] = {
                    arr: orderArr,
                    index: 0
                };
            }
            return geneVal(key);
        },
        "advert_author": function() {
            var window = function() {
                return this;
            } ();
            function geneVal(key) {
                var o = __rap__context__[key];
                var arr = o.arr;
                return arr[o.index++%arr.length];
            }
            if (!window.__rap__context__) {
                window.__rap__context__ = {};
            }
            var orderCmd = "$order(\"\",\"\")";
            var orderArr = eval('[' + orderCmd.substring(7, orderCmd.length - 1) + ']');
            var key = '10026';
            if (!__rap__context__[key]) {
                __rap__context__[key] = {
                    arr: orderArr,
                    index: 0
                };
            }
            return geneVal(key);
        },
        "create_time": function() {
            var window = function() {
                return this;
            } ();
            function geneVal(key) {
                var o = __rap__context__[key];
                var arr = o.arr;
                return arr[o.index++%arr.length];
            }
            if (!window.__rap__context__) {
                window.__rap__context__ = {};
            }
            var orderCmd = "$order(1431681119,1431681119)";
            var orderArr = eval('[' + orderCmd.substring(7, orderCmd.length - 1) + ']');
            var key = '10027';
            if (!__rap__context__[key]) {
                __rap__context__[key] = {
                    arr: orderArr,
                    index: 0
                };
            }
            return geneVal(key);
        },
        "adv_top": function() {
            var window = function() {
                return this;
            } ();
            function geneVal(key) {
                var o = __rap__context__[key];
                var arr = o.arr;
                return arr[o.index++%arr.length];
            }
            if (!window.__rap__context__) {
                window.__rap__context__ = {};
            }
            var orderCmd = "$order(\"\",\"\")";
            var orderArr = eval('[' + orderCmd.substring(7, orderCmd.length - 1) + ']');
            var key = '10028';
            if (!__rap__context__[key]) {
                __rap__context__[key] = {
                    arr: orderArr,
                    index: 0
                };
            }
            return geneVal(key);
        },
        "scene_id": function() {
            var window = function() {
                return this;
            } ();
            function geneVal(key) {
                var o = __rap__context__[key];
                var arr = o.arr;
                return arr[o.index++%arr.length];
            }
            if (!window.__rap__context__) {
                window.__rap__context__ = {};
            }
            var orderCmd = "$order(267,267)";
            var orderArr = eval('[' + orderCmd.substring(7, orderCmd.length - 1) + ']');
            var key = '10029';
            if (!__rap__context__[key]) {
                __rap__context__[key] = {
                    arr: orderArr,
                    index: 0
                };
            }
            return geneVal(key);
        },
        "remark": function() {
            var window = function() {
                return this;
            } ();
            function geneVal(key) {
                var o = __rap__context__[key];
                var arr = o.arr;
                return arr[o.index++%arr.length];
            }
            if (!window.__rap__context__) {
                window.__rap__context__ = {};
            }
            var orderCmd = "$order(\"\",\"\")";
            var orderArr = eval('[' + orderCmd.substring(7, orderCmd.length - 1) + ']');
            var key = '10030';
            if (!__rap__context__[key]) {
                __rap__context__[key] = {
                    arr: orderArr,
                    index: 0
                };
            }
            return geneVal(key);
        },
        "isfav": function() {
            var window = function() {
                return this;
            } ();
            function geneVal(key) {
                var o = __rap__context__[key];
                var arr = o.arr;
                return arr[o.index++%arr.length];
            }
            if (!window.__rap__context__) {
                window.__rap__context__ = {};
            }
            var orderCmd = "$order(0,0)";
            var orderArr = eval('[' + orderCmd.substring(7, orderCmd.length - 1) + ']');
            var key = '10031';
            if (!__rap__context__[key]) {
                __rap__context__[key] = {
                    arr: orderArr,
                    index: 0
                };
            }
            return geneVal(key);
        },
        "category_id": function() {
            var window = function() {
                return this;
            } ();
            function geneVal(key) {
                var o = __rap__context__[key];
                var arr = o.arr;
                return arr[o.index++%arr.length];
            }
            if (!window.__rap__context__) {
                window.__rap__context__ = {};
            }
            var orderCmd = "$order(19,19)";
            var orderArr = eval('[' + orderCmd.substring(7, orderCmd.length - 1) + ']');
            var key = '10032';
            if (!__rap__context__[key]) {
                __rap__context__[key] = {
                    arr: orderArr,
                    index: 0
                };
            }
            return geneVal(key);
        },
        "area": function() {
            var window = function() {
                return this;
            } ();
            function geneVal(key) {
                var o = __rap__context__[key];
                var arr = o.arr;
                return arr[o.index++%arr.length];
            }
            if (!window.__rap__context__) {
                window.__rap__context__ = {};
            }
            var orderCmd = "$order(12,12)";
            var orderArr = eval('[' + orderCmd.substring(7, orderCmd.length - 1) + ']');
            var key = '10033';
            if (!__rap__context__[key]) {
                __rap__context__[key] = {
                    arr: orderArr,
                    index: 0
                };
            }
            return geneVal(key);
        },
        "update_time": function() {
            var window = function() {
                return this;
            } ();
            function geneVal(key) {
                var o = __rap__context__[key];
                var arr = o.arr;
                return arr[o.index++%arr.length];
            }
            if (!window.__rap__context__) {
                window.__rap__context__ = {};
            }
            var orderCmd = "$order(1431920552,1431920552)";
            var orderArr = eval('[' + orderCmd.substring(7, orderCmd.length - 1) + ']');
            var key = '10034';
            if (!__rap__context__[key]) {
                __rap__context__[key] = {
                    arr: orderArr,
                    index: 0
                };
            }
            return geneVal(key);
        },
        "pics": {},
        "from_id": function() {
            var window = function() {
                return this;
            } ();
            function geneVal(key) {
                var o = __rap__context__[key];
                var arr = o.arr;
                return arr[o.index++%arr.length];
            }
            if (!window.__rap__context__) {
                window.__rap__context__ = {};
            }
            var orderCmd = "$order(0,0)";
            var orderArr = eval('[' + orderCmd.substring(7, orderCmd.length - 1) + ']');
            var key = '10035';
            if (!__rap__context__[key]) {
                __rap__context__[key] = {
                    arr: orderArr,
                    index: 0
                };
            }
            return geneVal(key);
        }
    }]
}

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.