2016-03-28 17 views
0

jquery、bootstrap、handlebarsを使用します。 私はタブをクリックすると、私はいくつかの関数を呼び出します。 これらの関数では、いくつかのvarを使用します。ドキュメントの準備はできていません

<script> 
    $(document).ready(function() { 

     var sourceLodgerContactAvailable = $("#lodger-contact-available-result-template").html(); 
     var templateLodgerContactAvailable = Handlebars.compile(sourceLodgerContactAvailable); 


     $("a[href='#lodgerContactTab']").on('shown.bs.tab', function (e) { 

      e.target; // newly activated tab 
      e.relatedTarget; // previous active tabF 

      var location = assignLocationToLocal(); 
      $.when(location).then(function() { 
       getNotAssociateContact(); 
       getAssociateContact(); 
      }); 
     }); 

    ); 

    function getNotAssociateContact() { 

     $.ajax({ 
      type: "GET", 
      url: "http://localhost:8080/rest/contacts/notassociatedto/" + $("#lodgerId").val(), 
      success: function (data, status, jqXHR) { 

       $("#lodgerContactAvailableDivTemplate").empty(); 

       if (data.length != 0) { 
        $("#lodgerContactAvailableDivTemplate").append(templateLodgerContactAvailable(data)); //error 
        $('#lodgerContactAvailableTableResult').bootstrapTable('resetView'); 
       } 
      }, 
      error: function (jqXHR, status) { 
       check401Unauthorized(jqXHR); 
      } 
     }); 
    } 


</script> 

このエラーメッセージが表示されます。

templateLodgerContactAvailableは、それが機能的にunknowにおけるVARのようなものだ

が定義されていません。

ドキュメントの準備をする必要がありますか?

+0

あなたのtemplateLodgerContactAvailable変数は、$(document).ready内にローカルスコープしかありません。他の機能で使用したい場合は、それを参照する必要があります。 – ManoDestra

答えて

1

$.when(location).then(function() { 
      getNotAssociateContact(templateLodgerContactAvailable); 
      getAssociateContact(); 
     }); 



function getNotAssociateContact(templateLodgerContactAvailable) { 
     //your logic goes here 

} 

さも

1

変数は、その関数のスコープとその子スコープに設定されているdocument.ready関数の外で変数を宣言、関数から変数を渡す試してみてください。

function aFunction() { 
    var a = 12; 
} 

function bFunction() { 
    // This won't work because `a` is defined in `aFunction` 
    console.log(a); 
} 

var c = 12; 

function cFunction() { 
    // Works because `c` is declared outside of this function 
    console.log(c); 
} 

function dFunction() { 
    // Works for the same reason as `cFunction` 
    console.log(c); 
} 

あなたは両方の場所でその変数を使用したいのであれば、あなたは$(document).readyの外にそれをを宣言する必要があり、その後も、より良い方法を持っているだろう$(document).ready

var templateLodgerContactAvailable; 
$(document).ready(function() { 
    var sourceLodgerContactAvailable = $("#lodger-contact-available-result-template").html(); 
    templateLodgerContactAvailable = Handlebars.compile(sourceLodgerContactAvailable); 
    ... 
}); 

の内側にそれが価値だ割り当てますgetNotAssociateContactはパラメータをとります。その変数をgetNotAssociateContactに渡すことができます。

function getNotAssociateContact(template) { 
    // Use `template` instead of `templateLodgerContactAvailable` inside of this function 
    ... 
} 

次に、関数を呼び出すときに値を渡します。

var sourceLodgerContactAvailable = $("#lodger-contact-available-result-template").html(); 
var templateLodgerContactAvailable = Handlebars.compile(sourceLodgerContactAvailable); 

$("a[href='#lodgerContactTab']").on('shown.bs.tab', function (e) { 

    e.target; // newly activated tab 
    e.relatedTarget; // previous active tabF 

    var location = assignLocationToLocal(); 
    $.when(location).then(function() { 
    getNotAssociateContact(templateLodgerContactAvailable); 
    getAssociateContact(); 
    }); 
}); 
関連する問題