if
바인딩처럼 동작하는 사용자 지정 바인딩을 만들고 싶지만 요소를 완전히 제거하는 대신 제거해야 할 때마다 동일한 높이의 다른 요소로 바꿉니다.knockoutjs/shim binding
저는 해킹되지 않는 방법을 찾기 위해 고심하고 있습니다. 나는 교육적인 방법으로 이것에 대해 알아볼 수있는 녹아웃의 내부에 대해 충분히 알지 못합니다.
모든 포인터가 크게 감사하겠습니다.
감사합니다.
if
바인딩처럼 동작하는 사용자 지정 바인딩을 만들고 싶지만 요소를 완전히 제거하는 대신 제거해야 할 때마다 동일한 높이의 다른 요소로 바꿉니다.knockoutjs/shim binding
저는 해킹되지 않는 방법을 찾기 위해 고심하고 있습니다. 나는 교육적인 방법으로 이것에 대해 알아볼 수있는 녹아웃의 내부에 대해 충분히 알지 못합니다.
모든 포인터가 크게 감사하겠습니다.
감사합니다.
당신이 쓸 수있는 자신의 바인딩 :
ko.bindingHandlers.shim = {
update: function(element, valueAccessor, allBindings) {
// First get the latest data that we're bound to
var value = valueAccessor();
// Next, whether or not the supplied model property is observable, get its current value
var shim = ko.unwrap(value);
if (shim) {
var shimEl = $(element).data('shim');
// Create the shim element if not created yet
if (!shimEl) {
shimEl = $('<div />').addClass('shim').appendTo(element);
// Equal the height of the elements
shimEl.height($(element).height());
$(element).data('shim', shimEl);
}
shimEl.show();
} else {
var shimEl = $(element).data('shim');
if (shimEl) {
shimEl.hide();
}
}
// You can also trigger the if-binding at this point
// ko.bindingHandlers.if.update(element, valueAccessor, allBindings);
}
};
을 다음과 같이 사용 :
<div data-bind="shim: [condition]"></div>
당신이'결합하면하여 해결할 수 : CSS'과'[조건] : { shim : [condition]}'그리고 css에서 내용을 숨 깁니다 :'.shim {visibility : hidden}'? – sroes
좋은 생각. 제거 할 때 제거 된 요소의 높이에'.shim '높이를 설정해야하므로 순수한 CSS 솔루션 이상이 필요합니다. – Finbarr