nuysoft / Mock

A simulation data generator
http://mockjs.com
Other
19.53k stars 2.66k forks source link

无法在babel 后使用MockJs 吗? #139

Closed IssaTan1990 closed 8 years ago

IssaTan1990 commented 8 years ago

我的项目中使用了webpack 打包,其中所有js 通过 babel loader, 通过Mock 返回的数据,我使用 JSON.parse(data) 拦截器是生效了,但'work|3': [id: 99] 等无法生效。 console.log(data) 出来的是 'work|1': [{id: 99}],而不是 work: [{id: 99}, {id: 99}, {id: 99}],请问是什么原因?

Yakima-Teng commented 8 years ago

请问一下题主,'work|3': [id: 99]这个是什么语法?ES7的东西吗?

IssaTan1990 commented 8 years ago

@Yakima-Teng 很抱歉,是我当时打错了。实际应该是: 'work|3': [{id: 99}] 同时这个Issue 也是因为我个人对MockJs 的文档理解错误导致的。 当时的代码如下:

Mock.mock(/\.json/, function (options) {
    return {
        detail: {
        id: 69,
      title: 'detail title',
      workData: {
        'data|3': [
            {
            id: 100,
            title: 'work title',
            author: {
                name: 'Steve'
            }
          }
        ]
      }
    }
    }
})
$.ajax({
    url: 'hello.json',
    dataType: 'json'
}).done(function(data, status, jqXHR) {
    $('<pre>').text(JSON.stringify(data, null, 4))
        .appendTo('body')
})

JSFiddle 链接

但实际应该为:

Mock.mock(/\.json/, {
    detail: {
        id: 69,
      title: 'detail title',
      workData: {
        'data|3': [
            {
            id: 100,
            title: 'work title',
            author: {
                name: 'Steve'
            }
          }
        ]
      }
    }
})
$.ajax({
    url: 'hello.json',
    dataType: 'json'
}).done(function(data, status, jqXHR){
    $('<pre>').text(JSON.stringify(data, null, 4))
        .appendTo('body')
})

JSFiddle 链接