2016-03-31 74 views
-1

我想擺脫那個錯誤,但我目前正在一個特殊的塊使用KnockoutJS。問題是,當爲數據綁定讀取數據時,我的ViewModel尚未創建。我在加載ko後綁定它。 這裏是我的HTML視圖:KnockoutJS:應用綁定後渲染原因「xxx沒有定義」

<!DOCTYPE html> 
<html> 
<head> 
    <meta charset="UTF-8" /> 
    <title>{% block title %}{% endblock %} - Evosphere</title> 
    <link rel="icon" type="image/x-icon" href="{{ asset('design/img/icons/favicon.png') }}" /> 

    <link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css"> 

    <link href='https://fonts.googleapis.com/css?family=Open+Sans+Condensed:300,700' rel='stylesheet' type='text/css'> 
    <link href='https://fonts.googleapis.com/css?family=Bitter' rel='stylesheet' type='text/css'> 

    <link href='{{ asset("design/css/resp_lg.css") }}' media="screen and (max-width: 1550px)" rel='stylesheet' type='text/css'> 
    <link href='{{ asset("design/css/resp_md.css") }}' media="screen and (max-width: 1350px)" rel='stylesheet' type='text/css'> 

    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
    <script src="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script> 

    {% javascripts 
    'js/libs/*.js' 
    'js/Evo/BeforeInit/*/*.js' 
    %} 
    <script type="text/javascript" src="{{ asset_url }}"></script> 
    {% endjavascripts %} 
</head> 
<body> 
    <nav class="navbar-top"> 
    </nav> 
    <div data-knockout="messenger-block"> 
    <div id="messenger-attachment-container" class="container-messenger"> 
     <div data-bind="foreach: conversations"> 
      Ohoh 
     </div> 
    </div> 
    <div id="messenger-dialog-container" class="container-messenger-bottom"> 
    </div> 
</div> 
    <div class="main"> 
    {% block body %} 
    {% endblock %} 
    </div> 

    <script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.4.0/knockout-min.js"></script> 

    {% javascripts 
    'js/Evo/app.js' 
    'js/Evo/*/*.js' 
    %} 
     <script type="text/javascript" src="{{ asset_url }}"></script> 
    {% endjavascripts %} 

    {{ include('AppBundle:Javascript:init.js.html.twig') }} 

    {% javascripts 
    'js/Evo/RequireInit/Utility/*.js' 
    'js/Evo/RequireInit/Module/*/*.js' 
    'js/Evo/RequireInit/Module/bootstrap.js' 
    'js/Evo/RequireInit/Module/navigation.js' 
    'js/Evo/RequireInit/Module/feed.js' 
    %} 
    <script type="text/javascript" src="{{ asset_url }}"></script> 
    {% endjavascripts %} 

    {% block javascripts %} 
    {% endblock %} 
</body> 
</html> 

這裏是我的JS:

function ConversationDialogViewModel(){ 
var self = this; 

this.conversations = [1, 2, 3]; 
} 
var $messegnerBlockKnockout = $('[data-knockout="messenger-block"]'); 
ko.cleanNode($messegnerBlockKnockout[0]); 
ko.applyBindings(new ConversationDialogViewModel(), $messegnerBlockKnockout[0]); 
$messegnerBlockKnockout.show(); 
+1

導致問題的代碼在哪裏?什麼是'xxx'?請創建一個[最小,完整和可驗證的示例](http://stackoverflow.com/help/mcve)。 –

+0

對不起,我不知道如何以更好的方式來說明這一點。我只是有一個正常的HTML頁面,在它的底部,我包括淘汰賽和我的ViewModel。 – Despirithium

+0

我們需要看到一些**代碼**。編輯您的問題以包含相關的代碼和確切的錯誤信息,否則任何人都無法幫助您。 「xxx沒有定義」可能會出現一百萬個我能想到的原因,我肯定還會有一百萬以上的原因。 –

回答

0

我發現,我被另一個VM綁定到unexisting DOM元素。它看起來像ko應用到整個文檔。