2013-01-03 20 views
1

淘汰賽我有這個Fiddle多的ViewModels使用jQuery

它在小提琴可以正常使用,但只要我把一個ASP.NET應用程序MVC4不加載第二個視圖模型的一切! 這通常是隻有當我下面的腳本標記添加到我的項目

<script src="../../Scripts/jquery.mobile-1.2.0.js" type="text/javascript"></script> 

我需要一些jQuery函數加載第二個視圖模型或我是怎麼了? !)

這裏是我的代碼:

<form action="" data-bind=" template:{ 'if': loginVM, data: loginVM }"> 
//SomeCode 
</form> 

<form action="" data-bind=" template:{ 'if': startVM, data: startVM}"> 
//Some Code 
</form> 

<script type="text/javascript"> 

     var masterViewModel = { 

      loginVM: ko.observable(), 
      startVM: ko.observable(), 
      projektUnterbrechen: ko.observable(), 
      logout : ko.observable(), 
      projectStartVM: ko.observable() 

     }; 

     var LoginVM = function() { 
      var self = this; 
      self.mandant = ko.observable(); 
      self.user = ko.observable(); 
      self.password = ko.observable(); 
      self.showDetails = function() { 
       if ((self.user() == "Gregor") && (self.password() == "gregrech")) { 
        masterViewModel.loginVM(null); 
        masterViewModel.startVM(new StartVM()); 
        **//alert(masterViewModel.startVM()!=null) //==True** 


       } 
       else { 
        alert("Username oder Passwort falsch"); 
       } 

      }; 
     }; 

     var StartVM = function() { 
      self = this; 
      **//alert(masterViewModel.startVM()!=null) //==False** 
      //Um weiterzumachen muss man eingeloggt sein 
      self.favoriten = ko.observableArray([ 
       { 
        projectName: "Favorit1" 
       }, 
       { 
        projectName: "Favorit2" 
       }, 
       { 
        projectName: "Favorit3" 
       } 
       ]); 
      //Die zuletzt verwendeten Projekte 
      self.zuletzt = ko.observableArray([ 
      { 
       lastProjName: "Zuletzt1" 
      }, 
      { 
       lastProjName: "Zuletzt2" 
      }, 
      { 
       lastProjName: "Zuletzt3" 
      } 
      ]); 
      self.showStart = function (projectName, data, event) { 
       masterViewModel.projectStartVM(new ProjectStartVM(projectName)); 
       masterViewModel.startVM(null); 
      }; 
     }; 
     masterViewModel.loginVM(new LoginVM()); 
     $(document).on('pageinit', function() { 
      ko.applyBindings(masterViewModel); 
     }); 

</script> 

謝謝你的答案

編輯: 我發現,我得到不同的值,如果我比我的masterViewModel.startVM()=即使它必須是相同的! 也許這可以幫助你! 請看看與評論「**」在我的代碼明白我的意思

+0

當你把它放到一個MVC應用程序,它不工作你在瀏覽器的JavaScript控制檯中看到什麼?有沒有錯誤? – nemesv

+0

沒有錯誤 – Greg

+0

我現在發現了一件小事。也許你現在可以看到我做錯了 – Greg

回答

0

嘗試ready事件不pageinit事件加載視圖模型。

$(document).ready(function() { 
    ko.applyBindings(masterViewModel); 
}); 
+0

沒有幫助! 的問題是,第二視圖模型被執行,但似乎與JQery,什麼是真正奇怪的 – Greg

+0

我Editet我的問題的「如果」綁定符。 也許你可以再看看它? – Greg

+0

如何在實例化時應用startvm視圖模型而不是應用初始時間。 – Ray