Grails 我是否可以制作一个部分模板,在show使用时具有只读字段,而在edit and create使用时不具有只读字段?

Grails 我是否可以制作一个部分模板,在show使用时具有只读字段,而在edit and create使用时不具有只读字段?,grails,partials,Grails,Partials,我有显示、编辑和创建表单所使用的部分模板。 在show表单中,我不希望它们可编辑,这可能会让用户感到困惑。 有没有一个简单的解决方案,否则我需要一个不同的模板,显示形式或。。。那么为什么要使用模板呢 我已经将此绑定并创建了两个脚本,一个禁用,一个启用 脚本1 $(document).ready(function(){ $('.elements').attr('readonly',true); $('.elements').prop('disabled',true); }); 脚本2 $(doc

我有显示、编辑和创建表单所使用的部分模板。 在show表单中,我不希望它们可编辑,这可能会让用户感到困惑。 有没有一个简单的解决方案,否则我需要一个不同的模板,显示形式或。。。那么为什么要使用模板呢

我已经将此绑定并创建了两个脚本,一个禁用,一个启用

脚本1

$(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>

我本来打算把它作为一条评论添加进去,但后来它开始变得冗长而复杂

  • 为什么要将其存储在资产中? 只需将功能块添加到需要的模板中即可
  • _模板1.gsp

    <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]
        }
    }