繁体   English   中英

将Javascript文件与View分开

[英]Separate Javascript file from View

我正在使用Codeigniter并希望将JavaScript与视图文件分开,但是许多JavaScript函数需要来自控制器的数据(取决于控制器的值)

例如:

controller :

function show_post() {
    $data['data'] = $this -> get_data();                 //some data
    $data['random_key'] = $this -> generate_random();    //returns a random value
    $this -> load -> view('posts', $data);
}

并且鉴于我有一个js函数:

<script>
    function get_random() {
        return "<?= $random_key; ?>";
    }
</script>

如何将该JavaScript代码段保存到其他文件,例如posts.js 如果我做了类似的事情,那么我将无法在脚本中使用php变量。

在性能和维护方面,实现此目标的最佳方法是什么?

我不想遵循的其他一些方法:

  1. 将JS文件另存为PHP文件,然后将值传递到该文件
  2. 全局声明视图文件中的所有那些变量

您可以将值作为参数传递给js函数,例如post.js

function get_random( param ) {
    //use param here
}
//OR
function get_random( ) {
    //get arguments like
   var firstArg = arguments[0]; 
}

view.php

//include post.js file
//call the js function passing php variable as parameter, like
get_random("<?php echo $random_key; ?>");

你的意思是这样吗

一种使用隐藏字段的方法,在您的情况下,将它们存储在隐藏字段中,例如:

<input type="hidden" value="<?php echo $random_key;?>" id="randomkey">

并使用以下ID通过js访问它们:

$("#randomkey").val();

这样,您可以在js中使用控制器参数。

帮助它会帮助您!

最简单的方法是,在视图文件中将php变量定义为js变量

<script type="text/javascript">
    var random_key = <?= $random_key; ?>;
</script>

那么您可以在example.js文件中使用该变量

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM