小编mcv*_*mcv的帖子

为什么单选按钮不能"只读"?

我想显示一个单选按钮,提交其值,但根据具体情况,让它不可编辑.禁用不起作用,因为它没有提交值(或者是吗?),它会使单选按钮变灰.只读是我正在寻找的,但由于一些神秘的原因,它不起作用.

是否有一些奇怪的技巧我需要拉动以使只读按预期工作?我应该用JavaScript代替吗?

顺便说一下,有没有人知道为什么只读在单选按钮中不起作用,而它在其他输入标签中有效?这是HTML规范中难以理解的遗漏之一吗?

html readonly radio-button

198
推荐指数
5
解决办法
23万
查看次数

Web组件在IE11和Edge中实际可用吗?

Web组件是热门的新事物,也是一个真正的Web标准,每个人都在谈论它们并且可能使用它们,它们似乎是我们遇到的问题的完美解决方案(在不同的站点之间共享组件).

所以我们构建了几个Web组件.Chrome中的工作正常,但IE11中没有.使用polyfill可能吗?https://www.webcomponents.org/polyfills有大量的polyfills,但IE11一直在抱怨class.

也许编译成ES5?各种来源声称Web组件需要ES6,因为您在IE11中没有从HTMLElement获得相同类型的继承.有自定义元素-es5-adapter.js,但不知何故它不起作用.如果我编译下来,webcomponents不起作用.如果我不这样做,IE11就会失败class.

但是每个人都在使用网络组件.你怎么做呢?你根本不支持IE11/Edge吗?难道我做错了什么?

web-component polyfills internet-explorer-11 custom-element

17
推荐指数
1
解决办法
1万
查看次数

Angular:$ http和$ resource忽略自定义标头.为什么?

我正在尝试访问我无法控制的REST服务.第一个问题是该服务不包含Access-Control-Allow-Origin标头,这是一个问题,如果我理解正确,立即限制我使用JSONP.

此外,默认情况下,此服务发送XML而不是JSON,但它能够发送JSON.我认为它应该响应我的Accept标头,负责服务的人说它看着我的Content-Type.这意味着我需要做一个POST而不是一个GET(虽然当我只是获取一些静态数据时更有意义,对吗?).

像我一样顽固,我正在尝试我的Accept标头.由于Angular只接受JSON,我希望它Accept: application/json默认使用标头,但它没有,它忽略了我手动设置它的尝试:

app.config(['$httpProvider', function($httpProvider){
    console.log($httpProvider.defaults.headers.common);
    delete $httpProvider.defaults.headers.common['X-Requested-With'];
    $httpProvider.defaults.headers.post['Accept'] = 'application/json, text/javascript';
    $httpProvider.defaults.headers.post['Content-Type'] = 'application/json; charset=utf-8';
    $httpProvider.defaults.headers.post['Access-Control-Max-Age'] = '1728000';
    $httpProvider.defaults.headers.common['Access-Control-Max-Age'] = '1728000';
    $httpProvider.defaults.headers.common['Accept'] = 'application/json, text/javascript';
    $httpProvider.defaults.headers.common['Content-Type'] = 'application/json; charset=utf-8';
    $httpProvider.defaults.useXDomain = true;
}]);
Run Code Online (Sandbox Code Playgroud)

我在实际资源中再次这样做:

return $resource('http://foo.com/getStuff', {}, {
    fetch: {
        method:'JSONP',
        params: params,
        headers: {
            'Accept':'application/json, text/javascript',
            'Content-Type':'application/json; charset=utf-8'
        },
        isArray:false,
        callback: 'JSON_CALLBACK'
    }
});
Run Code Online (Sandbox Code Playgroud)

但是,请求标头仍然包含Accept: */*.

我的问题是:为什么?为什么Angular会忽略我的标题?我怎么能让它使用正确的标题呢?

而且:有没有办法在POST中使用JSONP?

编辑:最初我使用的是Angular 1.0.7,但我只是尝试了1.2.3并得到了相同的结果.标题被忽略,但每个人都声称这是实现目标的方法.

我也尝试直接使用$ http,而不是$ resource,使用相同的结果.

编辑2:这是一个JSFiddle.它是匿名的,并不使用我的真实服务器,但使用Firebug /开发人员工具,您可以验证它是否Accept: */*在两个调用上发送,尽管我尝试设置application/json …

jsonp http angularjs angularjs-resource

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

jest.fn() 声称没有被调用,但有

我正在测试一个 Vue 组件,当路由中存在某个参数时,该组件会在我的 Vuex 存储中调用某个操作。我在嘲笑这个动作jest.fn()

这是组件中的相关代码:

await this.$store.dispatch('someOtherAction');
if (this.$route.params && this.$route.params.id) {
    this.$store.dispatch('selection/selectElement', parseInt(this.$route.params.id, 10));
}
Run Code Online (Sandbox Code Playgroud)

这是模拟函数:

someOtherAction = jest.fn();
selectElement = jest.fn(() => console.log("selectElement has been called"));
Run Code Online (Sandbox Code Playgroud)

我的测试:

it('selects element if passed in route', async () => {
  const $route = {params: {id: '256'}};
  const wrapper = shallowMount(AbcModel, {
    mocks: {$route},
    store, localVue
  });
  expect(someOtherAction).toHaveBeenCalled();
  expect(selectElement).toHaveBeenCalled();
});
Run Code Online (Sandbox Code Playgroud)

在输出中,我可以看到“selectElement 已被调用”。显然它已经被调用了。然而,expect(selectElement).toHaveBeenCalled()失败了。

这怎么可能?它适用于我嘲笑的另一个函数。替换我模拟函数的顺序并不重要。消除调用另一个函数的期望也无关紧要,因此它看起来不像冲突。

vue.js jestjs vuex vuejs2

8
推荐指数
1
解决办法
3927
查看次数

Grails/Hibernate:如何通过isnull(property)命令最后得到NULL?

通常,当按字段升序排序时,首先获得NULL值,然后获得更有趣的值.通常,您最后需要NULL值.在MySQL中,你可以这样做:

SELECT * FROM people ORDER BY ISNULL(name), name;

但是,我正在使用带有Hibernate标准的Grails,我完全不知道如何在那里做到这一点.这甚至是以任何方式支持的吗?是否有某种方法可以通过自定义SQL表达式进行排序?我讨厌将所有标准重写为纯SQL,只是为了让它正确排序.

null grails hibernate criteria

6
推荐指数
2
解决办法
2763
查看次数

git update-index --no-assume-unchanged不起作用

assume-unchanged在一些文件上设置了一下,现在我想取消它们,但这不起作用.

> git update-index --no-assume-unchanged Gemfile
> git ls-files -v | grep Gemfile
S Gemfile
S Gemfile.lock
> git status
# On branch foo
nothing to commit (working directory clean)
> 
Run Code Online (Sandbox Code Playgroud)

我的Gemfile当然有变化.其中一些我不想承诺,其他我也承诺.如果其他人改变了Gemfile,我就无法合并因为那个位.它似乎真的搞得太多了.

所以我有两个问题:

1:我如何取消位置?2:是否有更好的方法可以忽略一个特定的本地更改,同时允许对该文件的其他更改正常工作?

git

5
推荐指数
1
解决办法
3449
查看次数

如何解耦 Web 组件?

我正在尝试使用纯 javascript Web 组件进行无框架工作。我希望我的 Web 组件能够独立工作并在不同的站点上使用,但我也希望两个组件能够进行通信。因此它们应该能够在不紧密耦合的情况下进行通信。

当我使用 Angular 时,这很容易。我可以通过 HTML 属性将对象传递给组件,并且组件将其作为对象而不是字符串接收。但在纯 JavaScript 中,属性始终是字符串。传递对象或以其他方式使 Web 组件相互了解并能够进行通信的正确方法是什么?

javascript loose-coupling web-component custom-element

5
推荐指数
2
解决办法
2219
查看次数

绑定在现有项目中的新SOAP请求失败

我已经向已经使用了大量SOAP请求的现有项目添加了一个新的SOAP请求.他们都很好.我以完全相同的方式添加我的新代码(通过Apache CXF从WSDL生成的代码),但不知何故它失败了.

我收到此错误:

javax.xml.ws.WebServiceException: Could not find wsdl:binding operation info for web method foo.
    at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:113)
    at $Proxy51.foo(Unknown Source)
Run Code Online (Sandbox Code Playgroud)

这是一个Grails项目,代码调用如下:

FooRequest request = new FooRequest()
processResponse(order) { getPort().foo(request) }
Run Code Online (Sandbox Code Playgroud)

它是底部的getPort().foo(),显然是失败的.事实上,我认为不是调用失败,而是闭包的创建,因为processResponse()似乎没有被执行(我在该方法的第一行放了一个println). 编辑:这是关闭的执行失败,而不是创建.所以它真的找不到getPort().foo(),尽管我生成的接口确实有这个方法:

public nl.wecompany.portal.webserviceQopi.QOPIResponse foo(
    @WebParam(name = "in", targetNamespace = "")
    com.myproject.FooRequest in
);
Run Code Online (Sandbox Code Playgroud)

getPort()返回一个org.apache.cxf.jaxws.JaxWsClientProxy@41079622,它也可以用于其他SOAP请求(有效的请求).

我在新代码和现有代码之间找不到任何有意义的区别.什么想法可能是错的?关于在哪里看的任何建议?

编辑:port.metaClass.methods*.name.sort().unique()包含我的新foo()方法.然而,当我调用它时,我得到了这个奇怪的wsdl:binding错误,并且该方法没有被执行(它没有到达第一行的println).

编辑:匿名化我打算匿名的一些东西.

grails binding soap wsdl cxf

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

Ruby中我的XML之前的字符无效

当我查看XML文件时,它看起来很好,并开始 <?xml version="1.0" encoding="utf-16le" standalone="yes"?>

但是当我在Ruby中读取它并将其打印到粗壮时,前面有两个: ??<?xml version="1.0" encoding="utf-16le" standalone="yes"?>

这些来自哪里,如何删除它们?使用REXML解析它会立即失败.删除第一个字符,然后解析它,给我这个错误:

REXML::ParseException: #<REXML::ParseException: malformed XML: missing tag start Line: Position: Last 80 unconsumed characters: <?xml version="1.0" encoding="utf-16le" s>

处理这个问题的正确方法是什么?

编辑:下面是我的代码.该ftp.get下载从FTP服务器的XML.(我想知道这可能是相关的.)

xml = ftp.get
puts xml
until xml[0,1] == "<"  # to remove the 2 invalid characters
  puts xml[0,2]
  xml.slice! 0
end
puts xml
document = REXML::Document.new(xml)
Run Code Online (Sandbox Code Playgroud)

最后一个put打印出正确的xml.但由于这两个无效的角色,我感觉还有其他问题.没有必要删除任何东西.不过,我不知道问题可能是什么.

编辑2:我正在使用Net :: FTP下载XML,但是这个新方法让我可以将内容读入字符串而不是文件:

class Net::FTP

  def gettextcontent(remotefile, &block) # :yield: line
    f = StringIO.new()
    begin
      retrlines("RETR " + remotefile) …
Run Code Online (Sandbox Code Playgroud)

ruby xml rexml

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

AngularJS:$watchCollection 不起作用;抛出错误

我在 AngularJS 中遇到了一个问题,$scope.$watchCollection()会引发错误。我已经将我的代码减少到与文档中的示例代码完全相同的程度(http://docs.angularjs.org/api/ng .$rootScope.Scope#$watchCollection),并且仍然抛出错误:

function OverviewCtrl($scope) {
  $scope.names = ['igor', 'matias', 'misko', 'james'];
  $scope.dataCount = 4;

  $scope.$watchCollection('names', function(newNames, oldNames) {
    $scope.dataCount = newNames.length;
  });
}
Run Code Online (Sandbox Code Playgroud)

我收到错误

'undefined' is not a function (evaluating '$scope.$watchCollection('names', function(newNames, oldNames) {
  $scope.dataCount = newNames.length;
})')
Run Code Online (Sandbox Code Playgroud)

我不知道可能是什么问题。我正在按照文档说的做,除了我将它放在控制器中,但似乎这段代码是用于控制器的。那么这里有什么问题呢?

javascript angularjs

0
推荐指数
1
解决办法
4656
查看次数