問題タブ [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.
javascript - JavaScript でボタンを追加した KO テンプレート データのレンダリングで問題が発生する
タイトルがまったく誤解を招く場合は、事前にお詫び申し上げます。私は一日中この問題に取り組んでおり、誰かが助けてくれるかどうか知りたいと思っていました.
概要: すべてのテンプレートは DOM に事前に読み込まれます。以前は、すべてのフォーム (テンプレート) が既存のページに表示されるように設計されていました。ただし、最近、すべてのテンプレートを jQueryUI ダイアログに表示するように移動しました。1 つのテンプレートを除いて、これを機能させるために必要なすべてのコードを正常に移動しました。これは、テンプレートを使用して jQueryUI ダイアログを開くボタンが検索後に DOM に読み込まれるためだと思います。
「追加」ボタンは、ViewModel 内の「addUos」関数を呼び出して、ユーザーが必要な数のフォームを追加し続けることができるようにします。
HTML
テンプレート: (テンプレート エンジンとして TWIG を使用)
jQueryUi ダイアログ:
JavaScript:
このコードは、テンプレートがレンダリングされる div を作成します
このコードは for ループ内にあり、基本グリッドにすべてのユーザー エントリを作成します。エントリごとに [追加] ボタンと [編集] ボタンが作成されます。[編集] ボタンは正常に機能しますが、[追加] ボタンを押すと必要に応じてダイアログが開きますが、テンプレートは表示されません。Chrome Dev Tools でテストした後、VM の addUos 関数はクリックしても起動されません。(それが私の主な問題です)
次に、特定の要素にバインディングを適用します
ViewModelObj: (現在、2 つの個別の VM があります)
ビューモデル:
要因と考えられるすべてのコードを含めましたが、他の情報やコードが必要な場合はお知らせください. 前もって感謝します!
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# では動作が異なると思います...そのため、どの言語から呼び出されたかに関係なく、この条件を機能させる方法を知る必要があります。
[編集] - 例 次の手順で問題を再現します。
- VB.NET を使用して、Visual Studio 2012 で新しい ASP.NET MVC 4 プロジェクトを作成します。
- パッケージ マネージャー コンソール (Install-Package kMVC) を介して Knockout MVC を追加します。
エラー (メソッドが null) を無視します。これは NuGet スクリプト エラーです。次の行を Global.asax.vb (Application_Start) に手動で追加します。
ModelBinders.Binders.DefaultBinder = 新しい PerpetuumSoft.Knockout.KnockoutModelBinder()
次の構成を BundleConfig.vb に追加します。
bundles.Add(New ScriptBundle("~/bundles/knockout").Include( "~/Scripts/knockout-{バージョン}.js", "~/Scripts/knockout.mapping-latest.js", "~/Scripts /perpetuum.knockout.js"))
モダナイザーの下の _layout.vbhtml で ScriptBundle をレンダリングします。
@Scripts.Render("~/bundles/knockout")
モデル フォルダーに新しいモデルを追加します。
DelegateDecompiler をインポートします
パブリック クラス HelloWorldModel
クラス終了
Controllers フォルダーに新しいコントローラーを追加します。
Public Class HelloWorldController Inherit PerpetuumSoft.Knockout.KnockoutController
クラス終了
MVC 拡張機能がモデルを認識できるようにプロジェクトをコンパイルします。
- コントローラーで Index アクションを右クリックし、[ビューの追加] を選択します。
- ビュー名はそのままにして、[厳密に型指定されたビューを作成] を選択し、HelloWorldModel をモデルとして選択します。残りはデフォルトのオプションのままにして、[追加] をクリックします。
ビューの上部に Imports ステートメントを追加します。
@Imports PerpetuumSoft.Knockout
コード セクションでノックアウト コンテキストを作成する
Dim ko = Html.CreateKnockoutContext()
ビューを定義し、モデルを 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 プロジェクトを作成するときに上記の手順を繰り返すと、すべてが期待どおりに機能します。
asp.net-mvc-4 - 部分ビューでの Knockout MVC モデル バインディング
ノックアウト MVC を使用しています。私のページでは、いくつかの部分ビューをレンダリングします。各部分ビューで、メインのサブモデルであるモデルを渡します。そして、「Uncaught Error: You cannot apply bindings multiple times to the same element.」というエラーが表示されます。ここにいくつかのコードがあります。
メインビュー
ページ パネルの部分ビュー
詳細検索 部分表示
モデル
問題が @ko.Apply() 文字列にあることは理解していますが、その理由はわかりません。問題を解決する方法はありますか?
knockout.js - MVC アプリケーションで Knockout Observable をバインドする方法
私は MVC で Knockout を使用しており、実行時に変更できるテキストを表示したいのですが、私のアプリケーションは、コーディング セクションで提供しているデータ、つまり静的データを表示していますが、テキスト ボックスのデータを変更すると、何も提供されません。結果。
私のコードは次のとおりです: -
モデル クラス
コントローラ クラス
クラスを見る
コーディングで指定された値を表示していますが、実行時に変更すると値が更新されません。
json - マッピング プラグインを使用したノックアウトと観察可能な配列
以下のコードは、最初に呼び出すと正常に動作しますが、2 回目の呼び出しでは gridviewmodel が乱雑になり、すべてのデータが冗長になります
removeAll() を使用して監視可能な配列をクリアしようとしましたが、うまくいきません。
何か案が?
将来この問題に直面する可能性があるため、Knockout マッピング プラグインで ko.mapping.fromJS(data, gridviewModel.items) を呼び出して修正できました。完全なコードは次のとおりです。
これで他の問題が解決することを願っています。
javascript - Knockout.jsのチェックボックスに基づいて将来の日付ピッカーの最大日付をバインドする
最大選択可能な日付が 6 か月先の日付ピッカーがあります。チェックボックスを選択すると、選択可能な最大日付は将来のいつでも可能です。これを Knockout.js でやろうとしています。
これは私の日付ピッカー入力オプションになります:
これは私のチェックボックスの入力になります:
私はこれに基づいて購読バインディングを持っています:
サブスクライブ可能なコードは次のとおりです。
javascript - フォームを検証するためにユーザーがボタンをクリックする必要があるようにするにはどうすればよいですか?
ボタンのグループがあり、次のフォームに進むにはそのうちの 1 つをクリックする必要があります。
私はjquery validateを使用しています。validate
メソッドを書きたいのですが、テキストフィールドに必須の値を与えるなどの典型的なアプローチを使用できません。
構文を知っていたとしても、すべてのボタンが必要なわけではないので、これが役立つとは思いません。active
3 つのボタンのいずれかがクリックされたときにレンダリングされる属性を活用する方法はありますか?