클릭 바인딩이있어, 추가 처리를 위해 자체 함수에 바인딩 컨텍스트 값을 전달해야하며이 값은 성공적으로 전달되었지만 클릭 대신 페이지로드시 함수가 실행됩니다.Knockout.js 클릭 바인딩 이상한 동작
<script src="../Scripts/knockout.mapping-latest.js"></script>
<script>
function UserStatusViewModel() {
var self = this;
self.clients = ko.observableArray();
$.getJSON("/api/users", self.clients);
self.updatestatus = function() {
$.getJSON("/api/users", function (data) {
ko.mapping.fromJS(data, {}, self.clients);
});
}
//Here I'm getting correct data fom click binding context, but this happend on page load, not on click
self.modal = function (un) {
localStorage.clear();
localStorage.setItem("speakto", un);
window.location.replace("http://somehost/operator/dialog");
}
};
$(function() {
var vm = new UserStatusViewModel();
ko.applyBindings(vm, document.getElementById('users'));
var chat = $.connection.chatHub;
chat.client.addChatMessage = function (name, message) {
vm.updatestatus();
};
chat.client.updateStatus = function() {
vm.updatestatus();
}
chat.server.userStatus = function() {
vm.updatestatus();
}
$.connection.hub.start().done(function() {
});
});
</script>
그리고 HTML 마크 업 :
<div data-bind="foreach: clients" id="users">
<div class="dialogs">
<div class="speech">
<div class="online">
<img alt="" data-bind="visible: ko.utils.unwrapObservable(IsOnline) == true" src="../img/online.png">
<img alt="" data-bind="visible: ko.utils.unwrapObservable(IsOnline) == false" src="../img/offline.png">
</div>
<div class="ava">
<img alt="" data-bind="attr: { src: ko.utils.unwrapObservable(AvaUrl) }">
</div>
<div class="name" data-bind="text: ko.utils.unwrapObservable(UserName), click: $root.modal(UserName)"></div>
<%--<div class="dateok" data-bind="text: $data.Timer"></div>--%>
<div class="text" data-bind="text: ko.utils.unwrapObservable(LastMessage)"></div>
</div>
</div>
</div>
P.S. 그래서, 여기에 뷰 모델입니다 죄송합니다. 저는 바인딩 바인딩 구문을 너무 빠르게 변경했습니다. 현재 가장 최신이며, 제가 말하고있는 것입니다.
에 설명되어 있습니다
핸들러의 "모델"인수로 전달됩니다 마크 업 표시하고 싶지 않습니다. –
바인딩에서 'bind'는 어떻게 되었습니까? 이전에 가지고 있던 것과 같은 올바른 systax'$ root.modal.bind ($ data, UserName) '입니다 ... – nemesv
죄송합니다. 그 사람이 틀 렸습니다. –