私はKnockoutjsが初めてです。監視可能なユーザーの配列があります。ここに私のユーザーモデルがあります:
function User(data) {
this.NameID = ko.observable(data.NameID);
this.UserID = ko.observable(data.UserID);
this.InTime = ko.observable(data.InTime);
this.OutTime = ko.observable(data.OutTime);
this.Notes = ko.observable(data.Notes);
this.StatusID = ko.observable(data.StatusID);
this.Status = ko.observable(data.Status);
this.InOut = ko.observable(data.InOut);
this.Name = ko.observable(data.Name);
return this;
}
次に、ビュー モデルでユーザーの配列を作成します。ビューで foreach を実行してテーブル内のすべてのユーザーを表示するのは簡単ですが、現在のユーザーが自分の変数を変更できるようにフォームを作成したいと考えています。セッション変数を使用して UserID を設定しています。次に、ko.utils.arrayFirstを使用して、配列から現在のユーザーを見つけます。私はここで意味をなしていないように感じます。ユーザーにアクセスするためのフォームを作成する方法はありますか? 以下のように:
function UserViewModel() {
var self = this;
self.users = ko.observableArray([]);
self.statuses = ko.observableArray([]);
self.currentUser = ko.utils.arrayFirst(self.users(), function (user) {
return user.UserID() == @HttpContext.Current.Session["UserID"];
});
}
次に、私の見解では、次のようなフォームを作成します(私はtwitter-bootstrapを使用しています):
<form class="well form-horizontal">
<div class="control-group">
<label class="control-label" for="Statuses">
Status</label>
<div class="controls">
<select id="Statuses" data-bind="options: statuses, optionsValue: 'StatusID', optionsText: 'Stat', value: currentUser.StatusID">
</select>
</div>
</div>
<div class="control-group">
<label class="control-label" for="InTime">
In:</label>
<div class="controls">
<input id="InTime" data-bind="value: currentUser.InTime" class="span1" />
</div>
</div>
<div class="control-group">
<label class="control-label" for="OutTime">
Out:</label>
<div class="controls">
<input id="OutTime" data-bind="value: currentUser.OutTime" class="span1" />
</div>
</div>
<div class="control-group">
<label class="control-label" for="Notes">
Notes</label>
<div class="controls">
<textarea id="Notes" data-bind="value: currentUser.Notes" /></textarea>
<p><span style="text-align:center;"><a id="chg" class="btn btn-primary" >Update</a></span></p>
</div>
</div>
</form>
意味がわからない場合、または問題を解決するためにさらに情報が必要な場合は、コメントしてください。ありがとう!!