code: function _checkEach(template, key) {
    if (key.indexOf('@each') !== -1) {
      var subKeys = key.split('@each');
      var listKey = subKeys[0].slice(0, -1); // remove last '.'
      var d = _get(template, listKey);
      var suffix = subKeys.slice(1).join('@each');
      return [].concat.apply([], d.map(function (item, index) {
        return _checkEach(template, listKey + '.' + index + suffix);
      }));
    }
    return [key];
  }
docs: Generate list of keys to be replaced according to the template
  Example1:
  <pre>
  var template = {a: [{b: ''}, {b: ''}]};
  var key = 'a.@each.b';
  var mappedKeys = _checkEach(template, key);
  console.log(mappedKeys); // ['a.0.b', 'a.1.b']
  </pre>
  Example2:
  <pre>
  var template = {a: {b: {c: ''}};
  var key = 'a.b.c';
  var mappedKeys = _checkEach(template, key);
  console.log(mappedKeys); // ['a.b.c']
  </pre>
  
  @param {object} template
  @param {string} key
  @returns {string[]}
  @private