1

技術的にはこの質問に対する答えはありますが、残念ながら私が探していた答えではありません。その人がずっと私と一緒に働いて、多くの努力を費やしたので、私はそれを受け入れなければなりませんでした。ここで私は同じqnに、私が求めている答えを具体的に取得するように求めています。

私が求めているのは、ノックアウトビューモデルのモデルフィールドの検証を宣言的に表現する方法です。

このMVCビューモデルを持つ:

public class Email
{
  public string Selected { get; set; }
  public string Name { get; set; }
}

public class User
{
  public string UserName { get; set; }
  public IList<Email> Emails { get; set; }
}

そしてこのノックアウトを持っているviewModel

var viewModel = {
  UserName: ko.observable("@Model.UserName"),
  Emails: ko.observableArray(@Html.Json(@Model.Emails) || []),

  // How to express these: ???
  // Email.Selected: ko.observable().extend({ required: true })
  // Email.Name: ko.observable().extend({ required: true, email: true })

}

viewModelそれを宣言的に表現するには、Knockoutでどのような変更を加える必要がありますか。viewModel基本的には、MVCと同様の方法でノックアウトを表現することになりますが、そのモデルのフィールドで( MVCデータ注釈の代わりに)ノックアウト検証を使用します。

答える前に最後まで読んでください。読むべきテキストはそれほど多くありませんが、ここで具体的なものを探しています。

4

1 に答える 1

1

私はEメールビューモデルを持っています。

var Email = 
{
    Selected: ko.observable().extend({ required: true }),
    Name: ko.observable().extend({ required: true, email: true })
}

次に、マッピング プラグインを使用して自動的に入力します。

var viewModel = function()
{
    var self = this;
    self.UserName: ko.observable("@Model.UserName");
    var mapping = {
    'Emails': {
        create: function(options) {
            return new Email(options.data);
        }
     }
     self.Emails= ko.mapping.fromJSON(@Html.Json(@Model.Emails), mapping);
}

ビューモデルを単純なJSオブジェクトではなく関数にする必要があると思うことに注意してください。そうしないと機能しないと思います。

于 2013-03-12T14:30:10.633 に答える