小编vij*_*agi的帖子

AngularJS ui路由器在没有URL的状态之间传递数据

我面临的问题是在两个状态之间传递数据而不暴露网址中的数据,就像用户不能真正直接落在这种状态上一样.

例如.我有两个状态"A"和"B".我正在状态"A"中进行一些服务器调用,并将调用的响应传递给状态"B".服务器调用的响应是一个字符串消息,这很长,所以我不能在url中公开它.

那么在角度ui路由器中有没有办法在状态之间传递数据,而不使用url params?

parameters state angularjs angular-ui-router

144
推荐指数
2
解决办法
14万
查看次数

Safari:媒体查询未按预期宽度触发

我写过这样的CSS媒体查询 -

@media screen and (max-width: 59.9375em) {
  .left {
   display: none;
  }
}
Run Code Online (Sandbox Code Playgroud)

这适用于除Safari 10.0.4及更低版本之外的所有浏览器.Safari似乎以不同方式处理媒体查询.

其他浏览器似乎将window.innerWidth作为用于触发媒体查询的视口宽度,但safari似乎将document.documentElement.clientWidth作为视口宽度并相应地触发媒体查询.

我可以看到实际断点和预期断点之间的差异为15px.我正在寻找一种跨浏览器的方式来处理这个问题.欢迎提出意见,提前谢谢.

css safari breakpoints media-queries

9
推荐指数
2
解决办法
2359
查看次数

如何在grails中注册自定义json marshaller

我正在尝试注册这样的自定义json marshaller

 JSON.createNamedConfig("dynamic",{ 
            def m = new CustomJSONSerializer()
            JSON.registerObjectMarshaller(Idf, 1, { instance, converter -> m.marshalObject(instance, converter) }) 
            })

and then using it like this

    JSON.use("dynamic"){
            render inventionList as JSON
            }
Run Code Online (Sandbox Code Playgroud)

但我不确定我的自定义序列化程序是否正在使用,因为当我调试控件时,永远不会marshalObject使用我的自定义序列化程序

我的自定义序列化程序如下

import grails.converters.deep.JSON
import java.beans.PropertyDescriptor
import java.lang.reflect.Field
import java.lang.reflect.Method
import org.codehaus.groovy.grails.web.converters.exceptions.ConverterException
import org.codehaus.groovy.grails.web.converters.marshaller.json.GroovyBeanMarshaller
import org.codehaus.groovy.grails.web.json.JSONWriter

class CustomJSONSerializer extends GroovyBeanMarshaller{
    public boolean supports(Object object) {
        return object instanceof GroovyObject;
    }

    public void marshalObject(Object o, JSON json) throws ConverterException {
        JSONWriter writer = json.getWriter();
        println 'properties '+BeanUtils.getPropertyDescriptors(o.getClass())
        for(PropertyDescriptor property:BeanUtils.getProperyDescriptors(o.getClass())){ …
Run Code Online (Sandbox Code Playgroud)

grails groovy json

8
推荐指数
2
解决办法
9947
查看次数

Grails 标准重复关联路径错误

我试图在一个标准中使用别名和正常关联名称,这给我“重复关联路径错误”我的类如下

class FlightReservation{
    Flight flight
    User usr
    String title
 }

class Flight {
    String flightNumber
    Category category

}

class Category {
    String name 
}
Run Code Online (Sandbox Code Playgroud)

条件查询

 FlightReservation.createCriteria().list(){
     createAlias("flight", "flt", CriteriaSpecification.LEFT_JOIN)

     flight{
       location{
        eq("name", "abc")
      }
    }


     order("flt.flightNumber", "asc")

}
Run Code Online (Sandbox Code Playgroud)

现在,当我想到它时,这似乎很明显,也许是 Hibernate 的限制,所以我想知道是否有替代方法来实现这一目标

我知道我可以使用 fetchMode 加载航班关联,但从查询中删除别名会使 order 子句变得困难(这将是动态的,嵌套闭包会使事情变得丑陋)

有人可能会说为什么我不能在这两个地方都使用“flt”(别名)?实际上,使用嵌套闭包而不是别名的其他标准来自代码的其他部分,我应该重用该代码。

让我知道,如果问题不够清楚,任何有关此错误的见解都会非常有帮助。

grails criteria associations duplicates

5
推荐指数
0
解决办法
1209
查看次数

如何以编程方式在jquery mobile Datebox插件1.1.0中设置日期

我想以编程方式为datebox控件的输入设置日期,为此我知道我可以使用这样的东西

$(element).trigger('datebox', {'method':'set', 'value':'dateString'});
Run Code Online (Sandbox Code Playgroud)

但这似乎没有更新控件(即当我打开日历时,它被设置为当前日期并且不等于输入字段中的值)

编辑:基于JTsage的指针,我将默认的日期格式覆盖为mm/dd/yyyy,使用这样的方式.

jQuery.extend(jQuery.mobile.datebox.prototype.options.lang, {
    'en': {
        dateFormat: '%m/%d/%Y'

    }
});
jQuery.extend(jQuery.mobile.datebox.prototype.options, {
    useLang: 'en'
});
Run Code Online (Sandbox Code Playgroud)

然后我尝试使用这样设置日期

$(element).trigger('datebox', {'method':'set', value:'07/02/2012'});
Run Code Online (Sandbox Code Playgroud)

但是当我导航到页面时,这个日期没有出现.有趣的是,当我尝试从firebug控制台更新日期(在该页面上)时,它更新了字段以及日期框控件.

我不知道为什么会这样.需要帮助,请回复JT

jquery-mobile datebox

2
推荐指数
1
解决办法
8240
查看次数

Grails自定义验证器,获取对字段名称的引用

我正在尝试为属性编写一个通用的自定义验证器,使其通用我需要在闭包内对字段名称的引用,代码如下在config.groovy

grails.gorm.default.constraints = {
nameShared(validator: {val, obj, errors->
        Pattern p = Pattern.compile("[a-zA-Z0-9-]{1,15}")
        Matcher m = p.matcher(val)
        boolean b = m.matches()
        if(!b)
        errors.rejectValue('name', "${obj.class}.name.invalid", "Name is invalid")

    })
Run Code Online (Sandbox Code Playgroud)

在我的域类中

class Student{
  String name

  static constraints = {
       name(shared:'nameShared')
   }
}

class Teacher{
  String firstName
  String lastName

  static constraints = {
     firstName(shared:'nameShared')
  }
}
Run Code Online (Sandbox Code Playgroud)

我想对name和firstName使用相同的验证器,但由于我在验证器中对fieldName进行硬编码,它将始终用于name而不是firstName,所以我想知道是否有任何方式我可以获得对fieldname并使验证器通用,请帮助

grails shared global customvalidator

2
推荐指数
1
解决办法
768
查看次数