0
사용자가 단일 항목을 클릭 할 때마다 전체 데이터를 한 번에 저장해야합니다. 그 때문에 각 속성에 대해 subscribe()을 사용했습니다. 하지만 제 경우에는 모델 내부 함수에서 부모 Apply30ting() 메서드를 호출해야합니다. 배열을 채울 때마다 List를 전달하는 것이 좋습니다. 나는 많은 수의 데이터를 가지고 있기 때문에. 당신이 나에게 말할 것,녹아웃 바인딩을 사용하여 모델 클래스에서 ViewModal 메서드를 호출해야합니다.
function UserViewModel(data) {
var self = this;
self.userID = data.userID;
self.userroles = ko.observableArray();
self.userroles.removeAll();
data.forEach(function(item) {
self.userroles.push(new UserRoleModal(item));
});
self.ApplySetting(data) {
//Ajax POST method to send List to server
}
}
function UserRoleModal(item) {
var self = this;
self.userID = ko.observable(item.Id);
self.CanEdit = ko.observable(item.CanEdit);
self.CanDelete = ko.observable(item.CanDelete);
self.canView = ko.observable(item.canView);
self.FullControl = ko.observable(item.FullControl);
self.canView.subscribe(function(newValue) {
// need to call ApplySetting method and pass List
});
}
<table class="table table-hover">
<thead>
<tr>
<th class="panel-body text-center"> CanEdit</th>
<th class="panel-body text-center"> CanDelete</th>
<th class="panel-body text-center"> canView</th>
<th class="panel-body text-center"> FullControl</th>
</tr>
</thead>
<tbody data-bind="foreach:userroles">
<tr>
<td class="panel-body text-center"><input type="checkbox" data-bind='checked: CanDelete' /></td>
<td class="panel-body text-center"><input type="checkbox" data-bind='checked: canView' /></td>
<td class="panel-body text-center"><input type="checkbox" data-bind='checked: FullControl' /></td>
</tr>
</tbody>
</table>
멋진 !!! 잘 설명하고 그것을 이해하고 구현할 수있었습니다. 매우 도움이됩니다. 고마워요 :) – Chanet
또한 서버에 단일 항목을 보낼 필요가 있다면 어떻게 말해도 동일한 접근 방식을 사용하여 보낼 수 있습니까? – Chanet