0

名前空間とノックアウト検証を組み合わせるのに問題があります。これは検証を破ります:

myNameSpace = {
    viewModel: {
        name: ko.observable().extend({ digit: { digit: true, message: "digits only"} })
    }
};
ko.validation.init({});
ko.applyBindings(myNameSpace);

とは対照的に:

myNameSpace = {
    viewModel: {
        name: ko.observable().extend({ digit: { digit: true, message: "digits only"} })
    }
};
ko.validation.init({});
ko.applyBindings(myNameSpace.viewModel);

これは問題なく動作します。

誰かが私に違いを説明できますか?</ p>

4

1 に答える 1

0

これは、オブジェクトとプロパティの存在についてです。「name」プロパティへのバインドがあった可能性があります。ko.applyBindings(myNameSpace); を実行すると、ko は myNameSpace オブジェクト内のプロパティ「name」を探します。これは存在しません。

ko.applyBindings(myNameSpace.viewModel); でバインドすると、ビュー モデル オブジェクト内で名前が検索されます。それはそれを見つけ、そのためプロパティまたはオブザーバブルにバインドできます。

ただし、最初のケースでは、"value : viewModel.name" でデータ バインドを使用すると、myNameSpace オブジェクトの viewModel プロパティの name プロパティを検索するため、機能します。

于 2012-12-05T13:10:14.200 に答える