我有一个像这样的部分观点:
@model Blah.Blah.ThisModel
<script type="text/javascript">
$.getScript("/Scripts/Pages/ReferralEdit.js");
initReferralEdit();
</script>
@* blah blah rest of view here *@
然后在我的ReferralEdit.js外部文件中,我有以下内容:
console.log('external loading');
function initReferralEdit() {
console.log('function is here');
}
当加载它作为主路径(非Ajax)时,这很好。通过Ajax加载时,在页面加载时检查控制台时,我得到以下内容:
Uncaught ReferenceError: initReferralEdit is not defined
external loading
所以,我知道正在加载文件,因为第一个console.log()
正在点火,但该功能似乎不可用。
任何人都可以解释原因吗? (以及为什么在external loading
输出之前错误显示在Chrome的日志上?)如何添加这些功能以便它们“注册”或“在正确的范围内”或者我不知道的是什么?
(我已经花了好几个小时试图找出如何在局部视图上加载JS,而且我总是坚持不定义这些函数......)
答案 0 :(得分:2)
在尝试调用文件中的任何方法之前,您需要确保文件已完全加载。尝试以下内容:
$.getScript( "/Scripts/Pages/ReferralEdit.js" )
.done(function( script, textStatus ) {
initReferralEdit();
})
.fail(function( jqxhr, settings, exception ) {
console.log('failed to load script');
});