2014-02-13 7 views
0
<!DOCTYPE html> 
<html> 
<head> 
    <meta charset="utf-8" /> 
    <meta name="viewport" content="width=device-width" /> 
    <title>Index</title> 
    <link href="/Content/site.css" rel="stylesheet"/> 

    <script src="/Scripts/modernizr-2.6.2.js"></script> 
<script src="/Scripts/jquery-1.8.2.js"></script> 
<script src="/Scripts/knockout-2.2.0.debug.js"></script> 


</head> 
<body> 


<h2>Index</h2> 






    <script type="text/javascript"> 
     // This is a simple *viewmodel* - JavaScript that defines the data and behavior of your UI 
     function AppViewModel() { 
      this.firstName = "Bert"; 
      this.lastName = "Bertington"; 
     } 

     // Activates knockout.js 
     ko.applyBindings(new AppViewModel()); 
    </script> 
    <p>First name: <strong data-bind="text: firstName"></strong></p> 
<p>Last name: <strong data-bind="text: lastName"></strong></p> 
</body> 
</html> 

위의 코드는 선택한 이름과 성을 반환하지 않습니다. 나는 knockout-2.2.0.js로 변경하려고했지만 작동하지 않을 것이다. 내가 도대체 ​​뭘 잘못하고있는 겁니까?녹아웃 스크립트가 작동하지 않습니다.

답변

3

왜 작동하지 않는 이유는 바인딩하려는 DOM 요소가로드되기 전에 녹아웃을 요청하는 것입니다. 따라서 녹아웃이 DOM을 데이터 바인딩으로 탐색 할 때 바인딩을 적용하지 않습니다. p 요소를 찾으십시오 (스크립트 태그 뒤에 배치되기 때문에 아직로드되지 않았습니다).

DOMContentLoaded 이벤트에서 ko.applyBindings을 호출하는 코드를 실행하여 스크립트 태그를 본문 끝으로 이동하거나 DOM이로드가 완료 될 때까지 코드가 실행되지 않도록하십시오.

+0

aah. 답장을 보내 주셔서 감사합니다. – user3306826

관련 문제