在Vuex商店变异中,是否可以访问吸气剂?考虑下面的例子.
new Vuex.Store({
state: {
question: 'Is it possible to access getters within a Vuex mutation?'
},
mutations: {
askQuestion(state) {
// TODO: Get question from getter here
let question = '';
if (question) {
// ...
}
}
},
getters: {
getQuestion: (state) => {
return state.question;
}
}
});
Run Code Online (Sandbox Code Playgroud)
当然这个例子没有多大意义,因为我可以question直接在state变异中的对象上访问属性,但我希望你能看到我想要做的事情.也就是说,有条件地操纵状态.
在变异中,thisis undefined和state参数提供对state对象的访问,而不是存储的其余部分.
关于突变的文档没有提到任何关于这样做的事情.
我的猜测是,这是不可能的,除非我错过了什么?我想替代方法是在商店外执行此逻辑(导致代码重复)或实现执行此操作的操作,因为操作可以访问整个商店上下文.我很确定这是一种更好的方法,那就是让变异集中在它实际应该做的事情上; 改变国家.这可能就是我最终会做的事情,但我只是好奇如果甚至可能在突变中访问一个getter?
我正在尝试访问我在AWS Beanstalk配置中定义的环境变量.我需要在配置文件中.ebextensions 或在配置文件中复制的文件中访问它.我尝试过以下方法:
container_commands:
update_nginx_config:
command: "cp .ebextensions/files/nginx/nginx.conf /etc/nginx/nginx.conf"
Run Code Online (Sandbox Code Playgroud)
而在我的nginx.conf文件,我曾经试图访问$MYVAR,${MYVAR}并且{$MYVAR},其中一些建议在这里和这里(后者直接是一个配置文件内).
files:
"/etc/nginx/nginx.conf" :
mode: "000644"
owner: root
group: root
content: |
$MYVAR ${MYVAR} {$MYVAR}
Run Code Online (Sandbox Code Playgroud)
这也不起作用.在所有情况下,变量名称只是输出$MYVAR,因此Beanstalk无法识别我的变量.我在AWS文档中找到了以下内容container_commands:
他们还可以访问环境变量,例如您的AWS安全凭证.
这很好,但它没有说明如何.
如何使用ebextensions访问环境变量,无论是在配置文件本身内还是在单独复制的文件中?
先感谢您!
我在Spring MVC项目中使用Spring Social Facebook来支持Facebook登录.这在几乎所有情况下都运行良好,但偶尔我会在日志中看到以下异常.
ERROR org.springframework.social.connect.web.ProviderSignInController - Exception while completing OAuth 2 connection:
java.lang.IllegalStateException: The OAuth2 'state' parameter doesn't match.
at org.springframework.social.connect.web.ConnectSupport.verifyStateParameter(ConnectSupport.java:173)
at org.springframework.social.connect.web.ConnectSupport.completeConnection(ConnectSupport.java:155)
at org.springframework.social.connect.web.ProviderSignInController.oauth2Callback(ProviderSignInController.java:216)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:483)
at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:221)
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:137)
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:110)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:776)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:705)
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:959)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:893)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:966)
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:857)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:618)
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:842)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:725)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:291)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:316)
at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:126)
at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:90)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330)
at …Run Code Online (Sandbox Code Playgroud) 我有一个基于Spring MVC + JPA + Hibernate的项目.我正在使用实体图(JPA 2.1)来定义从数据库中获取哪些数据,如下例所示.
EntityGraph<Company> entityGraph = entityManager.createEntityGraph(Company.class);
entityGraph.addAttributeNodes("reviews");
Map<String, Object> hints = new HashMap<String, Object>();
hints.put("javax.persistence.loadgraph", entityGraph);
Company company = entityManager.find(Company.class, companyId, hints);
Run Code Online (Sandbox Code Playgroud)
我的Review实体与Company实体(ManyToOne)有关联.
在这里,我只需获取一个Company带有填充reviews集合的对象.这在上面的场景中很有效.但是,如果我想获取给定公司的全部或部分评论呢?也就是说,Review与具有给定ID的公司相关联的对象.我想用一个List<Review>而不是一个Company对象List<Review>.这只是一个例子 - 基本上我正在寻找比仅仅基于主键查找对象更多的灵活性.我可以用HQL做到没有问题,但是我必须编写几个类似的查询,具体取决于我在特定上下文中需要哪些数据.
该find方法javax.persistence.EntityManager简单地使得可以基于主键查询对象.但是在某种程度上可以在更复杂的场景中使用实体图,例如使用Criteria对象还是HQL查询?例如,查找具有其他条件而不是主键的对象 - 甚至可能是关联条件.
我希望我清楚自己.提前致谢!
我正在为Laravel开发一个包含服务提供者的库.我已将此库添加到另一个项目的composer.json文件中.
composer.json"主项目" 的文件包含以下脚本.
"scripts": {
"post-root-package-install": [
"php -r \"copy('.env.example', '.env');\""
],
"post-create-project-cmd": [
"php artisan key:generate"
],
"post-install-cmd": [
"php artisan clear-compiled",
"php artisan optimize"
],
"pre-update-cmd": [
"php artisan clear-compiled"
],
"post-update-cmd": [
"php artisan optimize"
]
},
Run Code Online (Sandbox Code Playgroud)
除了一件事,我可以很好地包含库依赖项; 在pre-update-cmd和post-update-cmd脚本抛出一个错误,并导致了我很多麻烦.在运行sudo composer update以更新依赖项时,我收到以下错误.
$ sudo composer update
> php artisan clear-compiled
PHP Fatal error: Class 'MyName\MyProject\MyAwesomeServiceProvider' not found in /Users/Me/dev/MyProject/vendor/laravel/framework/src/Illuminate/Foundation/ProviderRepository.php on line 146
[Symfony\Component\Debug\Exception\FatalErrorException]
Class 'MyName\MyProject\MyAwesomeServiceProvider' not found
Script php …Run Code Online (Sandbox Code Playgroud) 我刚刚开始研究Zend Framework 2(并且是ZF的新手),在用户指南中,他们在添加新模块时使用自动加载.但是,我觉得对于一个新秀来说这个解释非常具有挑战性.他们Module.php在模块目录中添加一个文件,其中包含以下代码:
public function getAutoloaderConfig()
{
return array(
'Zend\Loader\ClassMapAutoloader' => array(
__DIR__ . '/autoload_classmap.php',
),
'Zend\Loader\StandardAutoloader' => array(
'namespaces' => array(
__NAMESPACE__ => __DIR__ . '/src/' . __NAMESPACE__,
),
),
);
}
Run Code Online (Sandbox Code Playgroud)
现在我做了一些挖掘,试图找出这个自动加载的全部内容.据我所知,自动加载使用spl_autoload_register()并且是一种避免require_once()在代码中无处不在的方法.因此,当尝试使用未定义的类时,autoload()将运行已注册的方法,该方法仅执行数组查找,并且如果已添加,则包括如下所示的文件.
// Zend/Loader/ClassMapAutoloader.php
public function autoload($class)
{
if (isset($this->map[$class])) {
require_once $this->map[$class];
}
}
Run Code Online (Sandbox Code Playgroud)
由于性能,这似乎很聪明.我希望我刚才写的是正确的.基于此,我试图getAutoloaderConfig()从第一个代码片段中弄清楚发生了什么,但我很困惑.看起来好像使用了这个方法返回的数组AutoloaderFactory::factory(),但我不确定是出于什么目的.使用选项实例化自动加载器,但确实如此,我不确定.我想数组的第二个条目指定在哪里找到模块命名空间的源文件 - 至少这是我的猜测.然而,我第一个条目并不确定.在用户指南中,它说明如下:
在开发过程中,我们不需要通过类图加载文件,因此我们为类图自动加载器提供了一个空数组.
该文件只返回一个空数组.我不确定这个ClassMapAutoloader的目的是什么.
对不起,如果我的观点不清楚; 基本上我试图弄清楚发生了什么getAutoloaderConfig()以及mymodule/autoload_classmap.php用于什么.如果有人能够对此有所了解,那将非常感激!
尝试将RxJS与TypeScript和Node.js一起使用时遇到问题.我正在使用NPM,我已经包含了rxjs-es版本5.我也使用了Typings,而且我已经包含了两个,es6-shim并且rx.all像这样:
{
"ambientDependencies": {
"es6-shim": "registry:dt/es6-shim#0.31.2+20160317120654",
"rx.all": "registry:dt/rx.all#2.2.28+20160316155526"
}
}
Run Code Online (Sandbox Code Playgroud)
以下是我的tsconfig.json档案.
{
"compilerOptions": {
"target": "es5",
"module": "commonjs",
"moduleResolution": "node",
"sourceMap": true,
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"removeComments": false,
"noImplicitAny": false
},
"exclude": [
"node_modules",
"typings/browser",
"typings/browser.d.ts"
]
}
Run Code Online (Sandbox Code Playgroud)
在TypeScript文件中,我尝试执行以下操作:
import { Observable } from 'rxjs/Observable';
当我尝试编译脚本时,我收到以下错误:
typings/main/ambient/rx.all/index.d.ts(10,11): error TS2304: Cannot find name 'Rx'.
Run Code Online (Sandbox Code Playgroud)
即使我尝试在我的脚本中使用RxJS,也会发生这种情况,因此问题与TypeScript类型有关.
为了使用RxJS,我需要使用typings和NPM安装什么?特别是,我对使用Observables很感兴趣.谷歌搜索几个小时后,我似乎无法弄清楚我需要做些什么来使它工作.我试过以下,但没有任何运气.我也在NPM和打字中尝试了很多rx包的组合,但是没有发现任何有用的东西.任何帮助深表感谢!
谷歌几个月前发布了gtag.js作为Google Analytics(分析)跟踪的新方法,据我了解,最终取代了analytics.js。gtag.js是设置新的Google Analytics(分析)帐户时的默认设置,因此代码段是从以下代码中提取的:
<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-12345678-1', 'auto');
ga('send', 'pageview');
</script>
Run Code Online (Sandbox Code Playgroud)
对此:
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-123456789-1"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'UA-123456789-1');
</script>
Run Code Online (Sandbox Code Playgroud)
我需要做的是使用gtag.js获取客户端ID。使用旧脚本,我可以执行以下操作。
ga(function(tracker) {
let clientId = tracker.get('clientId');
});
Run Code Online (Sandbox Code Playgroud)
从外观上看,由于ga变量确实可用,因此gtag.js通过Google跟踪代码管理器加载相同的analytics.js脚本。但是,存在一些差异,因为tracker参数是undefined在调用回调时,因为gtag.js不使用trackers,所以这种方法显然行不通。
我浏览了gtag.js的文档,但找不到任何有关如何获取客户端ID的信息。analytics.js的文档规定不要直接访问cookie以获取客户端ID,这很有意义。但是,有什么方法可以通过带有gtag.js的JavaScript API来获取它,还是我现在必须诉诸于读取cookie?
我正在尝试在Zend Framework中实现基于URL的翻译,以便我的网站对SEO友好.这意味着除了默认路由之外,我还需要如下所示的URL.
zend.local/en/module
zend.local/en/controller
zend.local/en/module/controller
zend.local/en/controller/action
Run Code Online (Sandbox Code Playgroud)
以上是我现在遇到的问题; 其余的应该没问题.我添加了一个控制器插件,用于获取lang参数,以便我可以在preDispatch方法中设置区域设置和转换对象.以下是我的一些路线(存储在.ini文件中):
; Language + module
; Language + controller
resources.router.routes.lang1.type = "Zend_Controller_Router_Route_Regex"
resources.router.routes.lang1.route = "(^[a-zA-Z]{2})/(\w+$)"
resources.router.routes.lang1.defaults.controller = index
resources.router.routes.lang1.defaults.action = index
resources.router.routes.lang1.map.1 = "lang"
resources.router.routes.lang1.map.2 = "module"
; Language + module + controller
; Language + controller + action
resources.router.routes.lang2.type = "Zend_Controller_Router_Route_Regex"
resources.router.routes.lang2.route = "(^[a-zA-Z]{2})/(\w+)/(\w+$)"
resources.router.routes.lang2.defaults.module = default
resources.router.routes.lang2.defaults.action = index
resources.router.routes.lang2.map.1 = "lang"
resources.router.routes.lang2.map.2 = "controller"
resources.router.routes.lang2.map.3 = "action"
Run Code Online (Sandbox Code Playgroud)
正如评论所示,几个URL结构将匹配相同的路由,这使我的应用程序错误地解释了格式.例如,lang1路由将匹配以下两个URL :
zend.local/en/mymodule
zend.local/en/mycontroller
Run Code Online (Sandbox Code Playgroud)
在第一个URL中,"mymodule"用作模块名称,这是正确的.但是,在第二个URL中,"mycontroller"用作模块名称,这不是我想要的.在这里,我希望它使用"默认"模块和"mycontroller"作为控制器.这同样适用于之前的 …
我使用Hibernate作为我的JPA提供程序,我希望在调用时忽略实体中的一个字段save().但是,我在相应的数据库表中有一个匹配列,我希望在获取实体时使用数据库值填充实体字段.因此,我希望在保存实体时忽略该字段,但在获取时不要忽略该字段.
如果我使用@Transient,该字段被完全忽略,这不是我想要的.有没有办法做到这一点?
java ×3
php ×3
hibernate ×2
jpa ×2
spring ×2
analytics ×1
analytics.js ×1
gtag.js ×1
javascript ×1
laravel ×1
laravel-5 ×1
rxjs ×1
spring-mvc ×1
typescript ×1
url-routing ×1
vue.js ×1
vuejs2 ×1
vuex ×1