Browse Source

add v-model read only filter warning

Evan You 11 years ago
parent
commit
99ebd511d7
2 changed files with 22 additions and 0 deletions
  1. 9 0
      src/directives/model/index.js
  2. 13 0
      test/unit/specs/directives/model_spec.js

+ 9 - 0
src/directives/model/index.js

@@ -26,6 +26,15 @@ module.exports = {
    */
 
   bind: function () {
+    // friendly warning...
+    var filters = this.filters
+    if (filters && filters.read && !filters.write) {
+      _.warn(
+        'It seems you are using a read-only filter with ' +
+        'v-model. You might want to use a two-way filter ' +
+        'to ensure correct behavior.'
+      )
+    }
     var el = this.el
     var tag = el.tagName
     var handler

+ 13 - 0
test/unit/specs/directives/model_spec.js

@@ -473,5 +473,18 @@ if (_.inBrowser) {
       expect(_.warn).toHaveBeenCalled()
     })
 
+    it('warn read-only filters', function () {
+      var vm = new Vue({
+        el: el,
+        template: '<input v-model="abc | test">',
+        filters: {
+          test: function (v) {
+            return v
+          }
+        }
+      })
+      expect(_.warn).toHaveBeenCalled()
+    })
+
   })
 }