2015-04-01 54 views
0

這是我的dxview: - 我在visual studio中使用了knockoutjs。在devextreme中使用knockoutjs的純計算功能的錯誤

<div data-options="dxView : { name: 'home', title: 'Home' } " > 
    <div class="home-view" data-options="dxContent : { targetPlaceholder: 'content' } " > 
     <p>First name: <input data-bind="value: firstName" /></p> 
     <p>Last name: <input data-bind="value: lastName" /></p> 
     <h2>Hello, <span data-bind="text: fullName"> </span>!</h2> 
    </div> 
</div> 

這是使用devextreme我在Visual Studio中的javascript: -

MyFirstProject.home = function (params) 
{ 

    var viewModel = function (first, last) { 
     this.firstName = ko.observable(first); 
     this.lastName = ko.observable(last); 
     this.fullName = ko.PureComputed(function() 
     { 
      return this.firstName() + " " + this.lastName(); 

     },this); 
    }; 
    ko.applyBindings(new viewModel("Planet", "Earth")); 
    return viewModel; 
}; 

這給了我雖然運行此程序。 錯誤是knockoutjs的pureComputed函數。 我無法理解爲什麼會有如下錯誤: - 錯誤:'未捕獲的類型錯誤:未定義不是函數',第6行,文件'http://localhost:51146/views/home.js'。

請告訴我這件事。 謝謝。

+0

你正在使用@dev的哪個版本的ko? – 2015-04-01 11:52:50

+0

我正在使用knockout-3.1.0.js – dev 2015-04-01 11:55:23

+0

純計算是在ko 3.2.0中引入的,因此它在3.1.0中將會是未定義的。嘗試使用3.2.0。歡呼 – 2015-04-01 11:57:20

回答

0

您可能已多次在視圖中應用綁定。您應該可以將視圖模型綁定到特定的元素。嘗試這樣做。

將id屬性定義爲div。例如:

<div id="one" data-options="dxView : { name: 'home', title: 'Home' } " > 
ko.applyBindings(viewModel, document.getElementById("one")); 
+0

我嘗試這個,但是這給了一個錯誤。錯誤:'未捕獲錯誤:您無法多次將綁定應用於同一元素。',第58行,文件'http:// localhost:51146/js/knockout-3.1.0.js'。 – dev 2015-04-01 13:08:17

+0

僅當您多次應用綁定到相同的元素時纔會出現此錯誤。看看這個「div」的父母是否已經有綁定。如果是這樣,那麼你是否試圖在已經綁定的父「div」中定義對「div」的不同綁定。在這種情況下,您應該使用[With binding](http://knockoutjs.com/documentation/with-binding.html) – Aathreya 2015-04-01 13:16:26

+0

將您的代碼放在jsfiddle中併發布鏈接 – Aathreya 2015-04-01 13:19:49