0

JQM と Knockout を使用してモバイル Web アプリケーションを構築しようとしています。Knockout スクリプトが機能した後、スタイルを取得しようとしました。

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

これは私の多かれ少なかれ私のノックアウトスクリプトです

var masterViewModel = {
    loginVM: ko.observable(),
    startVM: ko.observable(),
    projektUnterbrechen: ko.observable(),
    logout: ko.observable(),
    projectStartVM: ko.observable()

};
 var LoginVM = function () {
        var self = this;
        self.showDetails = function () {
            if ((self.user() == "Gregor") && (self.password() == "gregrech")) {
                masterViewModel.loginVM(null);
                masterViewModel.startVM(new StartVM());

            }
    };

    var StartVM = function () {
     //Some Code
    };

追加後の今

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

私のプロジェクトでは、ノックアウトが機能しなくなりました。masterViewModel が更新されていないようです! たとえば、私はこれを試しました:

var LoginVM = function () {
        var self = this;
        self.showDetails = function () {
            if ((self.user() == "Gregor") && (self.password() == "gregrech")) {
                masterViewModel.loginVM(null);
                masterViewModel.startVM(new StartVM());
                alert(masterViewModel.startVM()==null) //Messagebox displays "false"    
            }
    };
var StartVM = function () {
 alert(masterViewModel.startVM()==null) //Messagebox displays "true" 
};

この深刻な問題の解決策は何でしょうか?

4

1 に答える 1

0

JQM は、初期化されると DOM を変更し、デフォルトの ko バインディングの多くを役に立たなくします。カスタム バインディングを記述して、これらの問題を回避できます。ここで実際の問題が何であるかを判断するのは難しいですが、それはあなたに読むべき何かを与えるはずです.

これは、開始するのに役立つ記事です: http://www.scottlogic.co.uk/blog/colin/2012/10/integrating-knockout-and-jquerymobile/

于 2013-01-24T23:56:55.597 に答える