고려 뭔가 녹아웃 모델을 업데이트하는 더 좋은 방법 :SignalR 허브 클라이언트 방법에서이 같은
add(item);
delete(item);
update(item);
updateVotes(pk, votes);
PostHub을
get(pk);
add(item);
delete(item);
update(item);
허브 클라이언트 방법에 대한 PostHub
에 대한var postHub = $.connection.postHub;
function Post(post)
{
function pk()
{
return self.PostId;
}
self = this;
self.PostId = 0;
self.Text = ko.observable('');
self.Comments = ko.observableArray([]);
self.Votes = ko.observable(0);
self.CommentToEdit = new Comment();
self.NewComment = new Comment();
if(post)
{
self.PostId = post.PostId || 0;
self.Text = ko.observable(post.text) || ko.observable('');
//etc..
}
}
var vm = function()
{
self = this;
self.Posts = ko.obervableArray(mappedPosts);
self.StandalonePost = new Post(mappedStandalonePost);
self.PostToEdit = new Post();
self.NewPost = new Post();
}
허브 서버 방법을 독립 실행 형 모델 및 모델 모음에 대한 클라이언트 메소드를 어떻게 변경합니까? 예를 들어
: VM의
나는 이런 식으로 뭔가를 구현하는 것, 그것은
postHub.client.updateVotes = function(pk, count)
{
var post = getbyId(self.Posts(), pk) //getById uses ko.arrayFirst on pk() of model
post.Votes(count);
}
괜찮아요하지만 나는 독립 모델에 대한 다른 구현을해야합니다. 내가 이런 일을 할 수있는 단 하나의 구현 사전의 VM, 을 가지고 있지만, 그렇게 추한 것 : 내가 사용중인 모든 모델을 업데이트 할 수있는 곳
postHub.client.updateVotes = function(pk, count)
{
var post = getbyId(self.Posts(), pk) //getById uses ko.arrayFirst on pk() of model
//check every standalone model
if(!post && self.StandalonePost().pk() == pk)
{
post = self.StandalonePost();
}
post.Votes(count);
}
어떻게 한 곳을 구현하는 것이? 구현할 수있는 패턴이 있습니까 (& 게시가 마음에 듭니다. 타이프 스크립트도 가능합니다)?
를 사용하여 설치 당신은 어떤 모델
에서이 작업을 수행 할 수 있습니다 설정! 나는 그것이 어떻게 작동해야하는지 이해하지만, "추악한 부분"을 피할 수있는 방법을 알아낼 수 없다. 대답을 넓히고 나의 사례에서 어떻게 구현하고 구현할 수 있는가를 보여줄 수 있는가? – formatc
한 곳에 모아서는 안됩니다 (질문이 다소 모호합니다). 이벤트 집계를 통해 훌륭한 부분입니다. 특정 유형의 이벤트를 듣고 행동하려는 사람은 다른 모든 청취자와 완전히 분리 될 수 있습니다. 코드를 재사용하려면 뷰 모델 또는 유사한 클래스의 기본 클래스를 가져야합니다. – Anders