Browse Source

[build] 2.0.0-rc.3

Evan You 8 years ago
parent
commit
f4fd8bc99e
2 changed files with 30 additions and 17 deletions
  1. 29 16
      dist/vuex.js
  2. 1 1
      dist/vuex.min.js

+ 29 - 16
dist/vuex.js

@@ -1,5 +1,5 @@
 /*!
 /*!
- * Vuex v2.0.0-rc.2
+ * Vuex v2.0.0-rc.3
  * (c) 2016 Evan You
  * (c) 2016 Evan You
  * Released under the MIT License.
  * Released under the MIT License.
  */
  */
@@ -67,7 +67,7 @@
     Object.keys(map).forEach(function (key) {
     Object.keys(map).forEach(function (key) {
       var fn = map[key];
       var fn = map[key];
       res[key] = function mappedState() {
       res[key] = function mappedState() {
-        return fn.call(this, this.$store.state);
+        return fn.call(this, this.$store.state, this.$store.getters);
       };
       };
     });
     });
     return res;
     return res;
@@ -298,6 +298,7 @@
           var res = handler({
           var res = handler({
             dispatch: dispatch,
             dispatch: dispatch,
             commit: commit,
             commit: commit,
+            getters: store.getters,
             state: getNestedState(store.state, path),
             state: getNestedState(store.state, path),
             rootState: store.state
             rootState: store.state
           }, payload, cb);
           }, payload, cb);
@@ -455,7 +456,7 @@
       var fn = getters[key];
       var fn = getters[key];
       // use computed to leverage its lazy-caching mechanism
       // use computed to leverage its lazy-caching mechanism
       computed[key] = function () {
       computed[key] = function () {
-        return fn(store._vm.state);
+        return fn(store);
       };
       };
       Object.defineProperty(store.getters, key, {
       Object.defineProperty(store.getters, key, {
         get: function get() {
         get: function get() {
@@ -481,27 +482,39 @@
     var modules = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];
     var modules = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];
     var path = arguments.length <= 2 || arguments[2] === undefined ? [] : arguments[2];
     var path = arguments.length <= 2 || arguments[2] === undefined ? [] : arguments[2];
 
 
-    if (!modules) return getters;
+    if (!path.length) {
+      wrapGetters(getters, getters, path, true);
+    }
+    if (!modules) {
+      return getters;
+    }
     Object.keys(modules).forEach(function (key) {
     Object.keys(modules).forEach(function (key) {
       var module = modules[key];
       var module = modules[key];
       var modulePath = path.concat(key);
       var modulePath = path.concat(key);
       if (module.getters) {
       if (module.getters) {
-        Object.keys(module.getters).forEach(function (getterKey) {
-          var rawGetter = module.getters[getterKey];
-          if (getters[getterKey]) {
-            console.error('[vuex] duplicate getter key: ' + getterKey);
-            return;
-          }
-          getters[getterKey] = function wrappedGetter(state) {
-            return rawGetter(getNestedState(state, modulePath), state);
-          };
-        });
+        wrapGetters(getters, module.getters, modulePath);
       }
       }
       extractModuleGetters(getters, module.modules, modulePath);
       extractModuleGetters(getters, module.modules, modulePath);
     });
     });
     return getters;
     return getters;
   }
   }
 
 
+  function wrapGetters(getters, moduleGetters, modulePath, force) {
+    Object.keys(moduleGetters).forEach(function (getterKey) {
+      var rawGetter = moduleGetters[getterKey];
+      if (getters[getterKey] && !force) {
+        console.error('[vuex] duplicate getter key: ' + getterKey);
+        return;
+      }
+      getters[getterKey] = function wrappedGetter(store) {
+        return rawGetter(getNestedState(store.state, modulePath), // local state
+        store.getters, // getters
+        store.state // root state
+        );
+      };
+    });
+  }
+
   function enableStrictMode(store) {
   function enableStrictMode(store) {
     store._vm.$watch('state', function () {
     store._vm.$watch('state', function () {
       assert(store._committing, 'Do not mutate vuex store state outside mutation handlers.');
       assert(store._committing, 'Do not mutate vuex store state outside mutation handlers.');
@@ -517,9 +530,9 @@
   }
   }
 
 
   function getNestedState(state, path) {
   function getNestedState(state, path) {
-    return path.reduce(function (state, key) {
+    return path.length ? path.reduce(function (state, key) {
       return state[key];
       return state[key];
-    }, state);
+    }, state) : state;
   }
   }
 
 
   function install(_Vue) {
   function install(_Vue) {

File diff suppressed because it is too large
+ 1 - 1
dist/vuex.min.js


Some files were not shown because too many files changed in this diff