Hereは、私が取り組んでいるプランカのコードです。私はこのように見えるVMを定義しました。
var employee = function(fname,lname){
var self= this;
self.fname = ko.observable(fname);
self.lname = ko.observable(lname);
self.selectedElement = ko.observable('Default Value');
}
var vm = function(){
var self = this;
self.employees = new ko.observableArray([]);
self.selectedElement = ko.observable(-1);
var e1 = new employee('f1','l1');
var e2 = new employee('f2','l2');
self.employees.push(e1);
self.employees.push(e2);
};
ko.applyBindings(vm,container);
そして従業員のリストを表示するために私のコードは
<body id="container">
<h1>Empoyees</h1>
<div>
<div data-bind="foreach: employees">
<h4 data-bind="text: 'Employee' + $index()"></h4>
<span>First Name :</span>
<span data-bind="text: fname"></span>
<br/>
<span>Last Name :</span>
<span data-bind="text: fname"></span>
<br/>
<span data-bind="text: selectedElement()"></span>
<!-- I want to access parents 'selectedElement' i.e. vm.slectedElement() -->
<!--I tried below code but its causing binding error.-->
<!-- <span data-bind="text: $parent.selectedElement()"></span> -->
<br/>
</div>
</div>
なお、小娘「employee
」とメインビューモデル「vm
」両方同じプロパティが名付けた(selectedElement
)今の内側
ですforeachバインディング私はroot/parentコンテキストの 'selectedElement
'プロパティにアクセスしようとしていますが、foreach koが 'employee'クラスの 'selectedElement'プロパティにアクセスしているためです。
キーワード「$root
」と「$parent
」を使用して親要素プロパティに到達しようとしましたが、バインディングエラーが発生しました。
何か不足していますか? Hereは再びプランカーリンクです。
迅速な対応のために@Jamiecに感謝します。しかし、まだ私は私のビューモデルのオブジェクトをインスタンス化せずにすべての他のもの($ root/$ parentを除く)がなぜ働いたのか私の頭を傷つけています。私は基礎を知らないかもしれません。あなたはこれにいくつかの光を投げてくださいできますか? – user2243747
@ user2243747 knockoutはビューモデルとしてまっすぐな関数を受け入れますが、おそらく 'this'はウィンドウオブジェクトを参照します。ランタイムのビューモデルの階層を混乱させるので、 '$ root'や' $ parent'のようなものはおそらく間違った場所を指しているでしょう。 – Jamiec