바인딩 만들기 바인딩 목록보기 처음 foreach 문처럼 행동 할사용자 정의 녹아웃, 나는 다음과 같이 그 모양 사용자 지정 바인딩을 만들려고하고 jquerymobile 및 녹아웃 사용 (JQuery와 모바일 목록보기 용) foreach는 렌더링
<ul data-bind="listview: observablearray">
<li data-bind="text: text"></li>
</ul>
바인딩에 적용한 후 $ (element) .listview() 또는 업데이트의 $ (element) .listview ('refresh')를 적용합니다.
내가 바인딩 foreach는 모방 순진하기 위해 다음과 같은 일을 시도 : 불행하게도
ko.bindingHandlers.listview = {
init: function (element, valueAccessor) {
var listview = $(element);
listview.listview();
},
update: function (element, valueAccessor) {
var listview = $(element);
setTimeout(function() {
listview.html('');
var items = valueAccessor().list;
var link = valueAccessor().link;
var text = valueAccessor().text;
var icon = valueAccessor().icon;
$.each(ko.utils.unwrapObservable(items) || [], function (i, item) {
var li = $('<li></li>').css({
height: '44px'
})
var a;
if (link) {
a = $('<a href="#"></a>').click(function() {
link(item)
});
li.append(a);
}
if (icon) {
(a || li).append($('<img />').attr('src', icon(item)).addClass('ui-li-icon'));
}
if (text) {
(a || li).append($('<span></span>').text(item[text]));
}
listview.append(li);
});
listview.listview('refresh')
}, 0);
}
};
을뿐만 아니라,이 템플릿을 사용하지 않은 가난한 구현했다, 그것은 또한 초기화에 오류를 통해 :
Uncaught TypeError: Cannot read property 'jQuery19101983379740267992' of undefined
미리 감사드립니다.
(http://stackoverflow.com/questions/15702996/jquery -mobile-with-knockoutjs-listview-issue/15717480 # 15717480) 도움이 될 수 있습니다. – gbs
knockout의 내부 동작에 관심이 있지만, 익명의 템플릿을 수동으로 렌더링하는 방법 –