ノックアウト スクリプトをより整理しておきたいのですが、さらに、偶然に 2 つの関数に同じ名前を付けないようにしたいと考えています。だから私は同じ関数でviewModelをネストできるかどうか疑問に思っていました(私はそれを本当に単純に保ちました):Fiddle
ここにHTMLがあります
<p>First name: <strong data-bind="text: other.firstName">todo</strong></p>
<p>Last name: <strong data-bind="text: other.lastName">todo</strong></p>
<p>Full name: <strong data-bind="text: other.fullName">todo</strong></p>
そしてJS:
function AppViewModel() {
var self = this;
self.other = {
firstName: ko.observable("Bert"),
lastName: ko.observable("Bertington"),
/*fullName: ko.computed(function(){
return this.firstName + " " + this.lastName;
}, this)*/
}
}
これは問題なく動作しますが、ko.computed のコメントを外すとクラッシュします。このようにノックアウトを整理する方法はありますか? 計算されたクラッシュが発生するのはなぜですか?
編集:問題#2
次のようなフォームがある場合:
<form data-bind="submit: other.otherSubmit" data-ajax="false">
<button type="submit">Submit</button>
</form>
そして、次のように送信用のハンドラーを追加します。
// This is a simple *viewmodel* - JavaScript that defines the data and behavior of your UI
function AppViewModel() {
var self = this;
self.other = new function(){
var self = this;
self.firstName = ko.observable("Bert");
self.lastName = ko.observable("Bertington");
self.fullName = ko.computed(function(){
return self.firstName() + " " + self.lastName();
});
self.otherSumbit = function(){}
}
}
// Activates knockout.js
ko.applyBindings(new AppViewModel());
エラーコンソールがこれを返すのはなぜですか:
送信バインディングの値は関数でなければなりません