Grails 我是否可以制作一个部分模板,在show使用时具有只读字段,而在edit and create使用时不具有只读字段?
我有显示、编辑和创建表单所使用的部分模板。 在show表单中,我不希望它们可编辑,这可能会让用户感到困惑。 有没有一个简单的解决方案,否则我需要一个不同的模板,显示形式或。。。那么为什么要使用模板呢 我已经将此绑定并创建了两个脚本,一个禁用,一个启用 脚本1Grails 我是否可以制作一个部分模板,在show使用时具有只读字段,而在edit and create使用时不具有只读字段?,grails,partials,Grails,Partials,我有显示、编辑和创建表单所使用的部分模板。 在show表单中,我不希望它们可编辑,这可能会让用户感到困惑。 有没有一个简单的解决方案,否则我需要一个不同的模板,显示形式或。。。那么为什么要使用模板呢 我已经将此绑定并创建了两个脚本,一个禁用,一个启用 脚本1 $(document).ready(function(){ $('.elements').attr('readonly',true); $('.elements').prop('disabled',true); }); 脚本2 $(doc
$(document).ready(function(){
$('.elements').attr('readonly',true);
$('.elements').prop('disabled',true);
});
脚本2
$(document).ready(function(){
$('.elements').attr('readonly',false);
$('.elements').prop('disabled',false);
});
然后我将这些脚本存储在assets\javascript中。
它在show中运行得很好,但编辑和创建也都是只读的
似乎每个表单中都会自动使用这个目录中的所有内容,因为即使我从表单中删除了调用,它仍然有效
这里我展示了我最初添加脚本调用的位置:
<asset:javascript src="myScript_1.js"/>
</body>
</html>
我本来打算把它作为一条评论添加进去,但后来它开始变得冗长而复杂
<script>
$(document).ready(function(){
setReadOnly('${someDefinition}')
function setReadOnly(value) {
if (value==='READONLY') {
$('.elements').attr('readonly',true).prop('disabled',true);
}
}
})
</script>
在index.gsp中
如果js在那里,那么它将为该控制器操作选择模式并设置只读,或者将该模式从一个模板传递到另一个模板,控制器不必定义实际模式,主主视图页或索引页也可以定义模式
也许你需要玩/理解然后实现你不能匆忙完成这些事情,否则你会浪费时间和重写
只是为了确保我们在同一页上
默认情况下,javascript文件夹中的application.js文件启用了一个树行-默认情况下,这将读取所有js文件。如果您希望在不同的地方手动调用js,您需要删除这一行,并像该文件中提供的其他行一样声明您使用的每个js文件
这就是在application.js中声明之前要付出的代价(不再自动加载js文件)
但最重要的是,正如您所注意到的,这些都是全局js函数,实际上没有什么新的东西应该出现在没有函数something(){}
函数调用的地方
然后,当实际函数被调用时,它们会做出反应,而不是您如何从任何旧页面调用它,因为它发生在文档打开时,不管使用jquery禁用/启用表单字段
$('.elements').attr('readonly',true)
或$('.elements').prop('disabled',true)
要重新启用的false设置应该这样做的表单元素,使其具有一个名为class='elements'的类,以匹配将捕获具有该classI的所有表单元素的jquery调用,在这里也失败。看看我的修正案。这是一个很好的信息,我恐怕我现在不能测试这个,现在要做的太多了,所以我会在某一天回来。谢谢
def MyController {
def view() {
String mode='READONLY'
render view: 'index', model:[instance:params,mode:mode]
}
}