2013-01-15 170 views
1

我想在我的項目中使用淘汰賽js,所以我嘗試了簡單的Hello World示例,但是我無法讓它正常工作。我創建了一個新的MVC4項目,只是複製下面做一個簡單的綁定是我的代碼ASP.NET MVC4和淘汰賽js

<script src="~/Scripts/knockout-2.1.0.js" type="text/javascript"></script> 
<script type="text/javascript"> 

    // Here's my data model 
    var viewModel = function (first, last) { 
     this.firstName = ko.observable(first); 
     this.lastName = ko.observable(last); 

     //this.fullName = ko.computed(function() { 
      // Knockout tracks dependencies automatically. It knows that fullName depends on firstName and lastName, because these get called when evaluating fullName. 
      //return this.firstName() + " " + this.lastName(); 
     //}, this); 
    }; 

    $(document).ready(function() { 
     ko.applyBindings(new viewModel("Planet", "Earth")); // This makes Knockout get to work 
    });​ 
</script> 

<div class="liveExample"> 
    <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> 

基本上,它只會顯示在一個文本框模型的價值。 我已經引用我的項目中knockout.js,但它不工作 我還添加了淘汰賽JS在我BundleConfig.cs

bundles.Add(new ScriptBundle("~/bundles/knockout").Include("~/Scripts/knockout-2.1.0.js")); 

我沒有工作

+0

您是否嘗試過在文檔中準備好'applyBindings'調用?如果HTML尚不存在,它可能會失敗。 – Tyrsius

+0

我更新了代碼並試圖調用文檔,但它仍然沒有工作。 – reggieboyYEAH

+0

好吧,它在[小提琴](http://jsfiddle.net/9KM9F/)中工作,您網頁上的其他內容必須出錯。你在控制檯中是否有任何錯誤? – Tyrsius

回答

4

。這將把聲明移動到HTML頁面的底部,讓HTML首先渲染。這是我第一次開箱即用的代碼版本:

@{ 
    ViewBag.Title = "Index"; 
} 


<h2>Index</h2> 

<div class="liveExample"> 
    <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> 

@section scripts { 
    <script src="~/Scripts/knockout-2.2.1.js"></script> 
    <script type="text/javascript"> 
    var viewModel = function (firstName, lastName) { 
     this.firstName = ko.observable(firstName); 
     this.lastName = ko.observable(lastName); 
    }; 

    $(function() { 
     ko.applyBindings(new viewModel("Planet", "Earth")); 
    }); 
    </script> 
} 
+0

謝謝!這工作:) – reggieboyYEAH

0

嘗試把淘汰賽在文檔的。沒有任何錯誤信息,我唯一可以說的是我遇到了類似的問題,這是我的修復。

我的例子讓我發瘋,因爲它在小提琴中工作,但不是在MVC中,我向我的一位設計師朋友提及它,他說這是因爲對他而言,基本上是在頁面開始之前需要完全下載渲染。

希望如果您正在使用MVC,使用腳本部分聲明你的JS這有助於