感谢Dan Wahlin的精彩文章,我设法实现了Angular控制器和服务的延迟加载.但是,懒惰加载独立模块似乎没有一种干净的方法.
为了更好地解释我的问题,假设我有一个应用程序将是如下结构没有RequireJS:
// Create independent module 'dataServices' module with 'Pictures' object
angular.module("dataServices", []).factory("Pictures", function (...) {...});
// Create 'webapp' ng-app, with dependency to 'dataServices', defining controllers
angular.module("webapp", ['dataServices'])
.controller("View1Controller", function (...) {...})
.controller("View2Controller", function (...) {...});
Run Code Online (Sandbox Code Playgroud)
以下是Plunker中带有RequireJS的示例应用程序:http://plnkr.co/aiarzVpMJchYPjFRrkwn
问题的核心是Angular不允许ng-app在实例化后添加依赖.结果,我的解决方案是用来angular.injector检索我要使用的Picture对象实例View2Controller.见js/scripts/controllers/ctrl2.js文件.
这给我带来了两个问题:
你有没有想过如何使用RequireJS延迟加载独立模块,并以某种方式将此模块挂钩角度,因此可以使用正常的角度依赖注入语法?
注意:
问题是关于独立模块的延迟加载.这个具体示例的一个简单解决方案是使用缓存的$ providers创建"Pictures"对象,ng-app.config但这不是我想要的.我正在寻找适用于第三方模块的解决方案,例如angular-resource.
Apache Beam 似乎拒绝识别 Kotlin 的Iterable. 这是一个示例代码:
@ProcessElement
fun processElement(
@Element input: KV<String, Iterable<String>>, receiver: OutputReceiver<String>
) {
val output = input.key + "|" + input.value.toString()
println("output: $output")
receiver.output(output)
}
Run Code Online (Sandbox Code Playgroud)
我收到以下奇怪的错误:
java.lang.IllegalArgumentException:
...PrintString, @ProcessElement processElement(KV, OutputReceiver), @ProcessElement processElement(KV, OutputReceiver):
@Element argument must have type org.apache.beam.sdk.values.KV<java.lang.String, java.lang.Iterable<? extends java.lang.String>>
Run Code Online (Sandbox Code Playgroud)
果然,如果我替换Iterable为java.lang.Iterable,相同的代码就可以正常工作。我究竟做错了什么?
依赖版本:
1.3.212.11.0这是一个包含完整代码和堆栈跟踪的要点:
更新:
经过一番反复试验,我发现虽然List<String>抛出了类似的异常但MutableList<String>实际上有效:
class PrintString: DoFn<KV<String, MutableList<String>>, String>() {
@ProcessElement
fun processElement(
@Element input: KV<String, …Run Code Online (Sandbox Code Playgroud) 我通常设置我tsconfig.json的strict设置true.这意味着noImplicitAny也是如此true.但是,strict设置时,typescript似乎忽略typeRoots了本地创建*.d.ts文件的条目.这是tsconfig.json我使用的示例:
{
"compilerOptions": {
"declaration": true,
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"lib": [ "es2017" ],
"module": "CommonJS",
"noImplicitReturns": true,
"outDir": "lib",
"removeComments": true,
"sourceMap": true,
"strict": true,
"target": "es2017",
"typeRoots": [ "./typings", "./node_modules/@types" ],
"types": [ "node" ],
},
"compileOnSave": true,
"include": [ "./src/**/*" ]
}
Run Code Online (Sandbox Code Playgroud)
我可以在tsconfig.json上面添加以下内容,它将起作用:
{
"compilerOptions": {
...
"noImplicitAny": false,
...
}
}
Run Code Online (Sandbox Code Playgroud)
这是我创建的示例项目,用于说明此问题:
https://github.com/marcoslin/tstyping-test
知道为什么会这样吗?
我试图看看我是否可以使用ui-router通过实现状态的延迟加载将状态设置委托给我的应用程序的子组件.虽然我设法让延迟加载部分使用$state.go或等效,我无法使用URL工作.
例如,在启动时,我app将只设置以下两种状态:view1和view2.当view1状态被加载时,它然后设置它自己的子状态:view1.profile和view1.interest.从Gist看一下这个示例站点:
http://bl.ocks.org/marcoslin/raw/b59cfa9a9a44bde04f9f/
正如您将从上面的示例中看到的那样,View1Profile在启动时不是有效链接,但如果您单击它,它将加载view1然后加载view1profile生成的url:
http://bl.ocks.org/marcoslin/raw/b59cfa9a9a44bde04f9f/#/view1/profile
但是,如果您单击上面生成的URL,则app重新加载并不再了解view1profile并重定向您home.关于如何解决这个问题的任何建议?更具体地说,无论如何我可以获取触发$stateNotFound事件的URL 吗?
也许答案是他们关于如何:懒惰加载状态的神秘文档的一部分.我无法弄明白他们的意思:
自今天早上 7 点以来,我的数据流作业一直失败,并出现错误:
europe-west3-c 区域中的工作人员池启动未能启动任何所需的 1 个工作人员。ZONE_RESOURCE_POOL_EXHAUSTED:实例“”创建失败:区域“projects//zones/europe-west3-c”没有足够的可用资源来满足请求。尝试不同的区域,或稍后再试。
我尝试在 中启动该作业europe-west3-a,europe-west3-b但遇到了同样的错误。已经超过 12 个小时了,但这个问题仍然存在。我知道这不是一般的资源可用性问题,因为我可以在该区域创建新的虚拟机而不会出现任何问题。
我什至向 Google 支持人员开放了案例,但不幸的是,他们甚至没有阅读我的票证,只是用标准回复来回复,要求我做我已经尝试过的事情。
知道我能在这里做什么吗?
更新1:
我尝试创造一个新的工作并且--worker-machine-type=e2-standard-2有效。问题似乎与他们的机器有关server-specified。
更新2:
我们现在进入问题的第二天europe-west3。我们的开发环境是这样的europe-west1,不会出现这个问题。
我在使用Ripple Emulator的Cordova 2.8 Android项目的最初页面加载时遇到了angular-mobile-nav的问题.我得到的错误是:
TypeError: Object #<Object> has no method 'overrideBackbutton'
at module.exports.exec (chrome-extension://geelfhphabnejjhdalkjhgipohgpdnoc/ripple.js:40:22917)
at backButtonChannel.onHasSubscribersChange (http://localhost:8076/cordova.js:1145:13)
at Channel.subscribe (http://localhost:8076/cordova.js:667:49)
at HTMLDocument.document.addEventListener (http://localhost:8076/cordova.js:132:34)
at null.<anonymous> (http://localhost:8076/components/mobile-nav/mobile-nav.js:11:14)
at Channel.fire (http://localhost:8076/cordova.js:709:23)
at http://localhost:8076/cordova.js:232:47
Run Code Online (Sandbox Code Playgroud)
基本上,它是由mobile-nav.js第11行引起的:
document.addEventListener("backbutton", function() {
而来自第1145行的cordova.js电话引发的错误:
exec(null, null, "App", "overrideBackbutton", [this.numHandlers == 1]);
这是一个可以复制的问题吗?任何帮助将不胜感激.
如果我选择查询repeated属性,我是否会对查询性能支付罚金?例如:
class User(ndb.Model):
user_name = ndb.StringProperty()
login_providers = ndb.KeyProperty(repeated=true)
fbkey = ndb.Key("ProviderId", 1, "ProviderName", "FB")
for entry in User.query(User.login_providers == fbkey):
# Do something with entry.key
Run Code Online (Sandbox Code Playgroud)
VS
class User(ndb.Model)
user_name = ndb.StringProperty()
class UserProvider(ndb.Model):
user_key = ndb.KeyProperty(kind=User)
login_provider = ndb.KeyProperty()
for entry in UserProvider.query(
UserProvider.user_key == auserkey,
UserProvider.login_provider == fbkey
):
# Do something with entry.user_key
Run Code Online (Sandbox Code Playgroud)
根据GAE的文档,似乎Datastore负责索引,而第一个不那么详细的选项就是使用索引.但是,我没有找到任何文件证实这一点.
编辑
UserProvider第二个示例的唯一目的是在用户和它的login_provider之间创建一对多关系.我想了解是否值得创建第二个实体而不是查询repeated属性.此外,假设我所需要的只是来自的关键User.
我是一个HTML/CSS新手,而div中的元素垂直对齐让我发疯.基本上,我有一个div包含文本和图像的混合,我想要做的就是垂直对齐ediv中间的元素.
根据这篇文章:
内联元素(以及仅内联元素)可以通过vertical-align:middle在其上下文中垂直对齐.但是,"上下文"不是整个父容器高度,而是它们所在文本行的高度.
所以,我创建一个SPAN和事件集,diplay: inline但没有任何作用:
<div id="main_section" class="main_align" >
<span class="inline">
<span class="inline"><img src="http://placehold.it/50x50" /></span>
<span class="small inline">A Very Small Text</span>
<span class="medium inline">Medium String</span>
</span>
</div>
Run Code Online (Sandbox Code Playgroud)
这是jsfiddle.
任何指针将不胜感激.
注意:如果在Chrome和Firefox中有效,我很高兴.无需解决IE特定问题.
angularjs ×3
apache-beam ×1
cordova ×1
css ×1
html ×1
javascript ×1
kotlin ×1
requirejs ×1
typescript ×1