2013-02-18 5 views
1

다음은 두 개의 녹아웃 템플릿 플러그인 및 plugin2입니다. 둘 다 ko.computed observables에 의존하며 두 observables 모두 deferEvaluation 속성이 true로 설정됩니다. 플러그인 렌더링하지 않지만 플러그인 2 을 렌더링합니다.녹아웃 템플릿이 계산 된 관찰 가능 렌더링되지 않음

플러그인을 렌더링하기 위해 무엇을 변경해야합니까 (deferEvaluation == true로 유지)?

여기 바이올린 http://jsfiddle.net/jeljeljel/YKLGM/

HTML

<div id="plugin" data-bind="template: { name: 'template1', data: $data }" ></div> 
<div id="plugin2" data-bind="template: { name: 'template2', data: $data }" ></div> 

<script type="text/html" id="template1"> 
    <div data-bind="foreach: columns()"> 
     <span data-bind="text: displayText"></span> 
    </div> 
</script> 

<script type="text/html" id="template2"> 
    <div data-bind="text: dataItem" ></div> 
</script> 

자바 스크립트

var gridData = { 
    columns: [{ 
     displayText: 'Name' 
    }, { 
     displayText: 'Last Login Date' 
    }, { 
     displayText: 'Email' 
    }] 
}; 

function DataModel() { 
    var self = this; 

    self.columns = ko.observableArray([]); 

    self.loadGrid = ko.computed({ 
     read: function() { 
      self.columns(gridData.columns); 
     }, 
     owner: this, 
     deferEvaluation: true 
    }); 

    self.id = ko.observable(1); 

    self.dataItem = ko.computed({ 
     read: function() { 
      return self.id() * 3; 
     }, 
     owner: this, 
     deferEvaluation: true 
    }); 
} 

dataModel = new DataModel(); 
ko.applyBindings(dataModel); 

답변

1

모두 ko.computed 관찰 가능한

을 따라 달라집니다

아니요, 아닙니다. plugin은 채워지지 않는 빈 observableArray 인 columns에만 종속됩니다. 어쩌면 당신은 loadGrid 어딘가에서 관찰 계산을 사용해야합니다.

그런데 loadGrid은 현재 상태에서 계산할 때 계산할 때 그다지 의미가 없지만 읽기 방법은 아무 것도 반환하지 않습니다.

관련 문제