在Ruby on Rails中在我的控制器中,我可以这样做:
$.fn.select2.defaults.set("templateResult", function(item, li) {
if (item && item.element && item.element.className.length) {
$(li).addClass(item.element.className);
}
return item.text;
}
这将从相关的视图目录
返回jstest.js.erbjstest.js.erb
def jstest
respond_to do |format|
format.js
end
end
结果是我得到了世界警告。
我想在Laravel中做同样的事情
在我的控制器中我有:
alert("Hello World")
在我看来(我用jstest.blade.js和jstest.js试过)
但是我收到了错误,找不到视图。
我实现此功能的唯一方法是调用视图jstest.blade.php并将此js包含在此php文件中的public function jstest( )
{
return view('jstest');
}
标记中。但这感觉有点不对劲......?
这在Laravel中甚至可能吗?如果是的话,我哪里错了?
示例用例:
想象一下下面的例子,我有一个评论表,用户可以点击一个删除按钮,它会发送一个删除评论的ajax请求。
我的路线:
<script>
在我的控制器中:
Route::delete('post/comments/{comment}','commentsController@delete');
commentDeleted.js:
Public Function delete($comment)
{
$comment->delete();
return commentDeleted.js
}
因此,从用户的角度来看,他们点击删除,评论会从屏幕上消失,而不会加载新页面。
答案 0 :(得分:0)
我不知道Laravel是否支持开箱即用,但这是我对你的问题的看法。
这就是我理解你的问题的方法:你想指定一个.js
文件的路径作为函数的参数,你希望这个.js
文件在通过浏览器加载时立即执行。 / p>
我会在这两个步骤中完成
jsview()
函数,类似于view()
.blade.php
文件
醇>
假设此视图将命名为javascript.blade.php
,并且位于resources/views/
目录中。
<!DOCTYPE html>
<html lang="en">
<head>
<script type="text/javascript" src="{{$path}}"></script>
</head>
<body></body>
</html>
function jsview($path)
{
return view('javascript', ['path' => $path]);
}
<?php
Route::get('/test', function()
{
return jsview('/assets/my.js');
});
这个答案并不是真正完整,因为您的浏览器将从public/
目录加载文件,因此您可以从那里读取以这种方式指定的所有.js
文件。我相信Laravel确实有一些与资源有关的东西,但我在这方面不够专业。
这张贴只是为了概述如何实现您需要的东西,但不是开箱即用。