問題タブ [knockout-mvc]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
279 参照

javascript - JavaScript でボタンを追加した KO テンプレート データのレンダリングで問題が発生する

タイトルがまったく誤解を招く場合は、事前にお詫び申し上げます。私は一日中この問題に取り組んでおり、誰かが助けてくれるかどうか知りたいと思っていました.

概要: すべてのテンプレートは DOM に事前に読み込まれます。以前は、すべてのフォーム (テンプレート) が既存のページに表示されるように設計されていました。ただし、最近、すべてのテンプレートを jQueryUI ダイアログに表示するように移動しました。1 つのテンプレートを除いて、これを機能させるために必要なすべてのコードを正常に移動しました。これは、テンプレートを使用して jQueryUI ダイアログを開くボタンが検索後に DOM に読み込まれるためだと思います。

「追加」ボタンは、ViewModel 内の「addUos」関数を呼び出して、ユーザーが必要な数のフォームを追加し続けることができるようにします。

HTML

テンプレート: (テンプレート エンジンとして TWIG を使用)

jQueryUi ダイアログ:

JavaScript:

このコードは、テンプレートがレンダリングされる div を作成します

このコードは for ループ内にあり、基本グリッドにすべてのユーザー エントリを作成します。エントリごとに [追加] ボタンと [編集] ボタンが作成されます。[編集] ボタンは正常に機能しますが、[追加] ボタンを押すと必要に応じてダイアログが開きますが、テンプレートは表示されません。Chrome Dev Tools でテストした後、VM の addUos 関数はクリックしても起動されません。(それが私の主な問題です)

次に、特定の要素にバインディングを適用します

ViewModelObj: (現在、2 つの個別の VM があります)

ビューモデル:

要因と考えられるすべてのコードを含めましたが、他の情報やコードが必要な場合はお知らせください. 前もって感謝します!

0 投票する
1 に答える
532 参照

asp.net-mvc - ノックアウト MVC - IsAssignableFrom および MethodCallExpression に関する VB.NET の問題

Knockout MVC というライブラリに問題があります。Knockout.js の .NET ラッパーです。C# ベースの ASP.NET MVC プロジェクトで使用する場合はかなりうまく機能しますが、VB.NET ベースのプロジェクトでは機能しないため、その理由がわかりました。

ライブラリを呼び出すプロジェクトが VB.NET で記述されている場合、条件は常に False と評価されます。C# で同じこと: 完全に動作します。

この異なる動作の原因がよくわからないので、コミュニティに尋ねるのは良い考えだと思いました. この行を C# と VB.NET の両方で動作するものに変換する方法を誰かが知っているかもしれません。

コードは ~ 行 260にあります

[編集]

明確にするために: 上記のコードを VB.NET に変換する必要はありません。問題はむしろ、C# または VB.NET コードから呼び出されたかどうかに基づいて、含まれている条件が異なる結果を返すことです。IsAssignableFrom は VB.NET と C# では動作が異なると思います...そのため、どの言語から呼び出されたかに関係なく、この条件を機能させる方法を知る必要があります。

[編集] - 例 次の手順で問題を再現します。

  1. VB.NET を使用して、Visual Studio 2012 で新しい ASP.NET MVC 4 プロジェクトを作成します。
  2. パッケージ マネージャー コンソール (Install-Package kMVC) を介して Knockout MVC を追加します。
  3. エラー (メソッドが null) を無視します。これは NuGet スクリプト エラーです。次の行を Global.asax.vb (Application_Start) に手動で追加します。

    ModelBinders.Binders.DefaultBinder = 新しい PerpetuumSoft.Knockout.KnockoutModelBinder()

  4. 次の構成を BundleConfig.vb に追加します。

    bundles.Add(New ScriptBundle("~/bundles/knockout").Include( "~/Scripts/knockout-{バージョン}.js", "~/Scripts/knockout.mapping-latest.js", "~/Scripts /perpetuum.knockout.js"))

  5. モダナイザーの下の _layout.vbhtml で ScriptBundle をレンダリングします。

    @Scripts.Render("~/bundles/knockout")

  6. モデル フォルダーに新しいモデルを追加します。

    DelegateDecompiler をインポートします

    パブリック クラス HelloWorldModel

    クラス終了

  7. Controllers フォルダーに新しいコントローラーを追加します。

    Public Class HelloWorldController Inherit PerpetuumSoft.Knockout.KnockoutController

    クラス終了

  8. MVC 拡張機能がモデルを認識できるようにプロジェクトをコンパイルします。

  9. コントローラーで Index アクションを右クリックし、[ビューの追加] を選択します。
  10. ビュー名はそのままにして、[厳密に型指定されたビューを作成] を選択し、HelloWorldModel をモデルとして選択します。残りはデフォルトのオプションのままにして、[追加] をクリックします。
  11. ビューの上部に Imports ステートメントを追加します。

    @Imports PerpetuumSoft.Knockout

  12. コード セクションでノックアウト コンテキストを作成する

    Dim ko = Html.CreateKnockoutContext()

  13. ビューを定義し、モデルを h2 タグの下に適用します

    <p>名前: @ko.Html.TextBox(Function(m) m.Firstname)</p>
    <p>姓: @ko.Html.TextBox(Function(m) m.Lastname)</p>
    <h2>こんにちは、@ko.Html.Span(Function(m) m.Fullname)!</h2>

    @ko.Apply(モデル)

ここで、アプリケーションをコンパイルして実行し、HelloWorld コントローラー (localhost:nnnnn/HelloWorld) を呼び出すと、行 ko.Apply(Model) で NotImplementedException が発生します。

C# で ASP.NET MVC プロジェクトを作成するときに上記の手順を繰り返すと、すべてが期待どおりに機能します。

0 投票する
1 に答える
5218 参照

asp.net-mvc-4 - 部分ビューでの Knockout MVC モデル バインディング

ノックアウト MVC を使用しています。私のページでは、いくつかの部分ビューをレンダリングします。各部分ビューで、メインのサブモデルであるモデルを渡します。そして、「Uncaught Error: You cannot apply bindings multiple times to the same element.」というエラーが表示されます。ここにいくつかのコードがあります。

メインビュー

ページ パネルの部分ビュー

詳細検索 部分表示

モデル

問題が @ko.Apply() 文字列にあることは理解していますが、その理由はわかりません。問題を解決する方法はありますか?

0 投票する
0 に答える
362 参照

knockout.js - MVC アプリケーションで Knockout Observable をバインドする方法

私は MVC で Knockout を使用しており、実行時に変更できるテキストを表示したいのですが、私のアプリケーションは、コーディング セクションで提供しているデータ、つまり静的データを表示していますが、テキスト ボックスのデータを変更すると、何も提供されません。結果。

私のコードは次のとおりです: -

モデル クラス

コントローラ クラス

クラスを見る

コーディングで指定された値を表示していますが、実行時に変更すると値が更新されません。

0 投票する
1 に答える
139 参照

json - マッピング プラグインを使用したノックアウトと観察可能な配列

以下のコードは、最初に呼び出すと正常に動作しますが、2 回目の呼び出しでは gridviewmodel が乱雑になり、すべてのデータが冗長になります

removeAll() を使用して監視可能な配列をクリアしようとしましたが、うまくいきません。

何か案が?

将来この問題に直面する可能性があるため、Knockout マッピング プラグインで ko.mapping.fromJS(data, gridviewModel.items) を呼び出して修正できました。完全なコードは次のとおりです。

これで他の問題が解決することを願っています。

0 投票する
1 に答える
710 参照

javascript - Knockout.jsのチェックボックスに基づいて将来の日付ピッカーの最大日付をバインドする

最大選択可能な日付が 6 か月先の日付ピッカーがあります。チェックボックスを選択すると、選択可能な最大日付は将来のいつでも可能です。これを Knockout.js でやろうとしています。

これは私の日付ピッカー入力オプションになります:

これは私のチェックボックスの入力になります:

私はこれに基づいて購読バインディングを持っています:

サブスクライブ可能なコードは次のとおりです。

0 投票する
1 に答える
75 参照

javascript - フォームを検証するためにユーザーがボタンをクリックする必要があるようにするにはどうすればよいですか?

ボタンのグループがあり、次のフォームに進むにはそのうちの 1 つをクリックする必要があります。

私はjquery validateを使用しています。validateメソッドを書きたいのですが、テキストフィールドに必須の値を与えるなどの典型的なアプローチを使用できません。

構文を知っていたとしても、すべてのボタンが必要なわけではないので、これが役立つとは思いません。active3 つのボタンのいずれかがクリックされたときにレンダリングされる属性を活用する方法はありますか?