2016-10-15 84 views
-1

我想在this video的幫助下,基於屬性的可用性驗證名爲Book的模型。我試圖按照有關如何驗證Backbone.js的模型的指令,但是當我去驗證一個實例它採用.isValid()方法稱爲myBook,則返回錯誤:爲什麼我得到錯誤:「.isValid()」不是一個函數?

Uncaught TypeError: myBook.isValid() is not a function 

這裏是我的代碼:

<script src="https://ajax.cdnjs.com/ajax/libs/backbone.js/0.3.3/backbone-min.js"></script> 
<script src="https://ajax.cdnjs.com/ajax/libs/underscore.js/1.1.4/underscore-min.js"></script> 
<script language="Javascript"> 
    var Book = Backbone.Model.extend({ 
    validate: function(attrs) { 
     if (!attrs.title) { 
     return "What's a book without a title?!"; 
     } 
    } 
    }); 

    var myBook = new Book(); 
    /* validation is run in browser */ 
</script> 

這與上面鏈接的視頻中的內容相似。當我進入控制檯並運行.isValid()方法時,它將返回所述錯誤。

+1

錯誤消息很明顯。 myBook不是你的方面,而是瞭解我們爲什麼需要代碼。 – jedi

+1

閱讀錯誤信息,函數沒有定義..聲明在哪裏。貼一些代碼花花公子 – chrismillah

回答

1

如果您沒有提供代碼示例,其中包含答案,則很難爲您提供幫助。

Backbone 0.3.3還沒有isValid呢。

它是added in Backbone 0.9.1但在0.9.9中被刪除。

它被改進了,並且added back in 1.0

在升級Backbone並關聯到關於h.has is not a function的註釋之後,您還需要升級underscore.js,因爲_.has已添加到1.3.1中。

您應該真的爲您的項目使用最新的穩定版本庫,因爲這樣可以避免這種不兼容。

+1

哦,謝謝。我從不看圖書館版本的規格。我將不得不使用新版本的Backbone。 –

+0

好吧,我用Backbone 1.0運行這個相同的代碼,現在我從版本本身得到一個奇怪的錯誤,說'h.has不是一個函數。'發生了什麼事情? –

+0

@ObinnaNwakwue在0.3.3和1.0之間有很多變化。由於您正在進行升級過程,因此我建議您立即使用最新版本(1.3.3)。 –

相關問題