2016-06-07 4 views
0

나는 바인딩 attr 간단한 HTML 요소가 alt을 찾아 녹아웃 관측치로 자동 초기화합니다.knockout.js 데이터 바인딩 ATTR 기본값은

값 또는 텍스트 바인딩에는이 작업을 수행하는 데 많은 예제가 있지만 임의의 attr 바인딩에는 아무 것도 수행하지 않습니다.

이것이 가능합니까?

+4

당신이 아직 접근을 시도 유무 : 여기

는 Plunker입니까? 그것은 당신이 무엇을했는지 완전히 명확하지 않습니다. 그 이유는 질문을 매우 광범위하게 처리 할 수있는 많은 방법이 있기 때문입니다. ("가능한가요?", 공격이없는 대답은 "예"이며, 게시물이 위장 된 것보다 더 많이 읽는 것처럼 보입니다.) – Jeroen

답변

1

이 더러운이지만, 당신이 작성해야 많은 장소가없는 경우 도움이 :

<img src="defaultImage.png" alt="default" data-bind="attr: { src: imgUrl() || 'defaultUrl', alt: imgAlt() || 'defaultAlt' }" /> 
0

나도 같은 요구를했다을 -이 예제 만 img 태그에 대한 그냥 생각 속성, 그것은 쉽게 모든 속성 연장 될 수있다 :

ko.bindingHandlers.src = { 
    update: function (element, valueAccessor) { 
     ko.bindingHandlers.attr.update(element, function() { 
      return {src: valueAccessor()}; 
     }); 
    } 
}; 

사용법 :

<img data-bind="src: imgUrl" /> 

위의 사용자 정의 바인딩은 고전적인 방법을 따릅니다. 먼저 관찰 가능 객체를 초기화하고 이미지 src 속성이 업데이트됩니다. 즉, img src는 녹아웃 관찰 가능의 기본 초기화 값을 사용합니다.

ko.bindingHandlers.src = { 
    init: function(element, valueAccessor) { 
    var value = valueAccessor(); 
    value(element.src); 
    }, 
    update: function(element, valueAccessor) { 
    ko.bindingHandlers.attr.update(element, function() { 
     return { 
     src: valueAccessor() 
     }; 
    }); 
    } 
}; 

마크 업의 사용은 동일하지만, 초기에 효과가 반전 : 당신은 반대 방법이 필요하면

, 당신은 사용자 정의 바인딩 초기화 콜백을 사용할 수 있습니다. https://plnkr.co/edit/CwI6KGirOkb3XpgS0Dj8?p=preview

관련 문제