给定一个简单的输入元素,我可以这样做:
<input [(ngModel)]="name" /> {{ name }}
Run Code Online (Sandbox Code Playgroud)
这不适用于我的自定义元素:
<my-selfmade-combobox [(ngModel)]="name" values="getValues()" required></my-selfmade-combobox>
Run Code Online (Sandbox Code Playgroud)
我该如何实现它?
角度正常的用例
如果您有父指令和子指令,则在父指令的控制器中创建方法,并在子指令中需要父控制器.Angular会将父控制器传递给子指令链接函数.
我的用例
我有一个用例,其中child指令是另一个指令的父指令.我在指令中间的指令上面有指令.中间指令是底部最后一个指令所必需的.
在一个简单的世界中,我可以为中间指令创建一个链接方法和一个控制器.link方法使用顶层控制器处理所有内容,中间控制器传递给bottom指令.
在我的情况下,中间指令的控制器中的方法必须调用父级中的方法,所以我需要中间控制器中的顶级控制器而不是中间指令的链接功能!
问题
如何将所需的控制器注入控制器而不是链接功能
angular.module('app').directive('top', function () {
return {
$scope: true,
templateUrl: "top.html",
controller: function() {
this.topMethod = function() {
// do something on top
}
}
}
});
angular.module('app').directive('middle', function () {
return {
$scope: true,
templateUrl: "middle.html",
require: "^top",
controller: function($scope, $attrs, topController) {
this.middleMethod = function() {
// do something in the middle
// call something in top controller, this is the part that makes everything so complicated
topController.topMethod();
}
}
} …
Run Code Online (Sandbox Code Playgroud) 我想在自定义元素中使用ng-model属性.问题是,我需要用表达式设置ng-model:
ng-model="{{anyVariable}}"
Run Code Online (Sandbox Code Playgroud)
问题是,一旦我将表达式添加到模板中的ng-model属性,我总是会收到错误:
Error: Syntax Error: Token 'x.name' is unexpected, expecting [:] at column 3 of the expression [{{x.name}}] starting at [x.name}}].
at Error (<anonymous>)
at throwError (http://localhost:9000/public/javascripts/angular.js:5999:11)
at consume (http://localhost:9000/public/javascripts/angular.js:6037:7)
at object (http://localhost:9000/public/javascripts/angular.js:6327:9)
at primary (http://localhost:9000/public/javascripts/angular.js:6211:17)
at unary (http://localhost:9000/public/javascripts/angular.js:6198:14)
at multiplicative (http://localhost:9000/public/javascripts/angular.js:6181:16)
at additive (http://localhost:9000/public/javascripts/angular.js:6172:16)
at relational (http://localhost:9000/public/javascripts/angular.js:6163:16)
at equality (http://localhost:9000/public/javascripts/angular.js:6154:16)
Run Code Online (Sandbox Code Playgroud)
使用的代码:
function addFormFieldDirective(elementName, template) {
app.directive(elementName, function() {
return {
restrict: "E",
scope: {},
replace: true,
// adds some extra layout
template: buildFormTemplate(template),
link: function(scope, elm, attrs) { …
Run Code Online (Sandbox Code Playgroud) 我有以下JSON:
{
id: 123,
subObjects: [
{
id: 564,
name: "foo",
contry: {
id: 1,
name: "Germany"
}
},
{
id: 777,
name: "bar",
contry: {
id: 1,
name: "Germany"
}
}
]
}
Run Code Online (Sandbox Code Playgroud)
并使用Gson对其进行反序列化.之后我需要合并JPA实体:
Model model = new Gson().fromJson(json, modelClass);
model = entityManager.merge(model)
Run Code Online (Sandbox Code Playgroud)
刷新从模型级别级联到子对象,然后再级联到国家/地区.这导致Hibernate的异常"实体副本已经分配给不同的实体".
如果我使用不同的国家,它就有效.如果我将国家实例从一个对象复制到另一个对象,则它可以工作,因此两个子对象都引用该contry的相同实例.
这两个国家都有相同的价值观.两者都具有相同的hashCode.这两个国家是平等但不是==,因为它们是不同的实例.
这个问题上列出的tipps对我没有帮助.
我正在使用Hibernate 4.1.3 Final和Gson 2.2
java.lang.IllegalStateException: An entity copy was already assigned to a different entity.
at org.hibernate.event.internal.EventCache.put(EventCache.java:184)
at org.hibernate.event.internal.DefaultMergeEventListener.entityIsDetached(DefaultMergeEventListener.java:285)
at org.hibernate.event.internal.DefaultMergeEventListener.onMerge(DefaultMergeEventListener.java:151)
at org.hibernate.internal.SessionImpl.fireMerge(SessionImpl.java:914)
at org.hibernate.internal.SessionImpl.merge(SessionImpl.java:896)
at org.hibernate.engine.spi.CascadingAction$6.cascade(CascadingAction.java:288)
at org.hibernate.engine.internal.Cascade.cascadeToOne(Cascade.java:380)
at org.hibernate.engine.internal.Cascade.cascadeAssociation(Cascade.java:323) …
Run Code Online (Sandbox Code Playgroud) Play framework 1.2.x以下面的错误开头:
Oops: UnexpectedException
An unexpected error occured caused by exception UnexpectedException: While applying class play.classloading.enhancers.ContinuationEnhancer on helpers.CheatSheetHelper$2
play.exceptions.UnexpectedException: While applying play.CorePlugin@3444d69d on helpers.CheatSheetHelper$2
at play.plugins.PluginCollection.enhance(PluginCollection.java:556)
at play.classloading.ApplicationClasses$ApplicationClass.enhance(ApplicationClasses.java:235)
at play.classloading.ApplicationClassloader.loadApplicationClass(ApplicationClassloader.java:167)
at play.classloading.ApplicationClassloader.getAllClasses(ApplicationClassloader.java:431)
at play.Play.preCompile(Play.java:600)
at play.Play.init(Play.java:304)
at play.server.Server.main(Server.java:162)
Caused by: play.exceptions.UnexpectedException: While applying class play.classloading.enhancers.ContinuationEnhancer on helpers.CheatSheetHelper$2
at play.CorePlugin.enhance(CorePlugin.java:302)
at play.plugins.PluginCollection.enhance(PluginCollection.java:551)
... 6 more
Caused by: java.lang.RuntimeException: java.io.IOException: invalid constant type: 15
at javassist.CtClassType.getClassFile2(CtClassType.java:203)
at javassist.CtClassType.subtypeOf(CtClassType.java:303)
at javassist.CtClassType.subtypeOf(CtClassType.java:318)
at play.classloading.enhancers.ContinuationEnhancer.enhanceThisClass(ContinuationEnhancer.java:49)
at play.CorePlugin.enhance(CorePlugin.java:297)
... 7 more
Caused by: java.io.IOException: invalid …
Run Code Online (Sandbox Code Playgroud) 停止码头后,它拒绝再次启动.它抱怨另一个名为docker0的桥已经存在:
level=warning msg="devmapper: Base device already exists and has filesystem xfs on it. User specified filesystem will be ignored."
level=info msg="[graphdriver] using prior storage driver \"devicemapper\""
level=info msg="Graph migration to content-addressability took 0.00 seconds"
level=info msg="Firewalld running: false"
level=info msg="Default bridge (docker0) is assigned with an IP address 172.17.0.0/16. Daemon option --bip can be used to set a preferred IP address"
level=fatal msg="Error starting daemon: Error initializing network controller: Error creating default \"bridge\" network: cannot create network fa74b0de61a17ffe68b9a8f7c1cd698692fb56f6151a7898d66a30350ca0085f (docker0): conflicts …
Run Code Online (Sandbox Code Playgroud) 我需要在我的伴侣对象中定义一个val,它用一个以伴侣类作为参数的方法初始化.
我想用特征处理这个问题,不要重复自己.我的问题是,X.getClass与classOf [X]不同.首先是类的同伴对象,第二个是班里的同伴类的,但我需要得到同伴类,而不直接硬编码.
基本上我需要这样的东西:
trait Foo {
}
object FooCompanionObject[f <: Foo] {
val fClazz = classOf[f]
}
// Bar's fClass should be classOf[Bar]
case class Bar extends Foo;
object Bar extends FooCompanionObject[Bar];
Run Code Online (Sandbox Code Playgroud)
问题是由于类型擦除,我无法获得泛型类
我需要在Classes上进行模式匹配.问题是,我有一些匹配Long的问题.
我需要以相同的方式处理scala.Long和java.lang.Long,但为什么我需要在两种情况下声明它们?
这是一个例子:
def test(typ: Class[_]) {
typ match {
case q if q == classOf[Long] => println("scala long...")
}
}
val scalaLongField: java.reflect.Field = ......
val javaLongField: java.reflect.Field = ......
test(scalaLongField.getType) // prints "scala long..."
test(javaLongField.getType) // scala.MatchError: class java.lang.Long (of class java.lang.Class)
Run Code Online (Sandbox Code Playgroud)
有没有办法处理它们没有实例而只有类?
尝试在OpenStack上使用Cinder卷作为我的pod的持久卷.配置cloudprovider并重新启动kubelet后,kubelet无法从云提供程序获取其外部ID.
可以使用comodo证书通过https访问OpenStack API.comodo-ca-bundle作为受信任的ca安装在节点上.使用curl对API工作没有--insecure和--cacert选项.
在centos 7上使用kubernetes 1.1.0-alpha
$ sudo journalctl -u kubelet
Oct 01 07:40:26 [4196]: I1001 07:40:26.303887 4196 debugging.go:129] Content-Length: 1159
Oct 01 07:40:26 [4196]: I1001 07:40:26.303895 4196 debugging.go:129] Content-Type: application/json
Oct 01 07:40:26 [4196]: I1001 07:40:26.303950 4196 request.go:755] Response Body: {"kind":"NodeList","apiVersion":"v1","metadata":{"selfLink":"/api/v1/nodes","resourceVersion":"172921"},"items":[{"metadata":{"name":"192.168.100.80","selfLink":"/api/v1/nodes/192.168.100.80","uid":"b48b4cb9-676f-11e5-8521-fa163ef34ff1","resourceVersion":"172900","creationTimestamp":"2015-09-30T12:35:17Z","labels":{"kubernetes.io/hostname":"192.168.100.80"}},"spec":{"externalID":"192.168.100.80"},"status":{"capacity":{"cpu":"2","memory":"4047500Ki","pods":"40"},"conditions":[{"type":"Ready","status":"Unknown","lastHeartbeatTime":"2015-10-01T07:31:55Z","lastTransitionTime":"2015-10-01T07:32:36Z","reason":"Kubelet stopped posting node status."}],"addresses":[{"type":"LegacyHostIP","address":"192.168.100.80"},{"type":"InternalIP","address":"192.168.100.80"}],"nodeInfo":{"machineID":"dae72fe0cc064eb0b7797f25bfaf69df","systemUUID":"384A8E40-1296-9A42-AD77-445D83BB5888","bootID":"5c7eb3ff-d86f-41f2-b3eb-a39adf313a4f","kernelVersion":"3.10.0-229.14.1.el7.x86_64","osImage":"CentOS Linux 7 (Core)","containerRuntimeVersion":"docker://1.7.1","kubeletVersion":"v1.1.0-alpha.1.390+196f58b9cb25a2","kubeProxyVersion":"v1.1.0-alpha.1.390+196f58b9cb25a2"}}}]}
Oct 01 07:40:26 [4196]: I1001 07:40:26.475016 4196 request.go:457] Request Body: {"kind":"DeleteOptions","apiVersion":"v1","gracePeriodSeconds":0}
Oct 01 07:40:26 [4196]: I1001 07:40:26.475148 4196 debugging.go:101] curl -k -v -XDELETE -H "Authorization: Bearer rhARkbozkWcrJyvdLQqF9TNO86KHjOsq" -H "User-Agent: kubelet/v1.1.0 (linux/amd64) …
Run Code Online (Sandbox Code Playgroud) 我必须使用指令ng-required,但我不能硬编码真或假.我需要在变量中使用它,但angular不能识别"true".
<div ng-app ng-init="test=true">
<div>
both have ng-required="true"
<br/>
one as hardcoded string literal, one via a variable
<br/>
Inspect them, one is not required!
</div>
<form name="myForm">
<input type="text" ng-required="{{test}}" />
<input type="text" ng-required="true" />
</form>
</div>
Run Code Online (Sandbox Code Playgroud)
我怎样才能使这个工作?
我需要通过选择框绑定复杂的对象.
我知道ng-options,但是我不能在ng-options中使用模板表达式.我需要将displaytext字段添加到控制器中的每个对象,就像这个小提琴一样.这意味着我需要更改演示文稿的逻辑/代码.这是一个令人担忧的分离.
有没有办法用不使用ng-options 的选择框绑定复杂对象?我需要在模板中编写displaytext声明,就像那样:
<select name="myObject" ng-model="myObject.sub">
<option ng-selected="!myObject.sub.id"></option>
<option value="" translate="myObject.sub.self" ng-selected="myObject.sub.id == -1">
<option ng-repeat="option in subselect.data" value="{{option}}" ng-selected="option.id == myObject.sub.id">
{{option.id}} {{option.shortName}} {{ option.comment }}
</option>
</select>
Run Code Online (Sandbox Code Playgroud)
目前这是绑定字符串[object Object]
,因为值属性中的插值.