Иногда вам может потребоваться обновить родительские свойства непосредственно в дочерней области. например необходимо сохранить дату и время родительского контроля после изменений дочерним контроллером. например, код в JSFiddle
HTML
event.date = {{event.date}}
event.time = {{event.time}}
event.date = {{event.date}}
event.time = {{event.time}}
event.date:
event.time:
JS
function Parent($scope) {
$scope.event = {
date: '2014/01/1',
time: '10:01 AM'
}
}
function Child($scope) {
}
36
задан oxbow_lakes 1 July 2009 в 17:20
поделиться
Вы можете сделать что-то подобное, если вам не нужен доступ к внешнему классу во внутреннем классе (чего бы у вас не было в Java, учитывая, что ваш внутренний класс был объявлен static
):
object A{
class B {
val x = 3
}
}
class A {
// implementation of class here
}
println(new A.B().x)
Как указывали другие, «статические» классы должны размещаться внутри сопутствующего объекта.
В Scala классы, черты и объекты, которые являются членами класса, зависят от пути . Например:
class Button {
class Click
}
val ok = new Button
val cancel = new Button
val c1 = new ok.Click
val c2 = new cancel.Click
Теперь c1 и c2 являются экземплярами -разных-классов. Один класс - ok.Click, а другой - cancel.Click. Если вы хотите указать тип всех классов Click, вы можете сказать Button # Click.
нет понятия статических членов в Scala. Вместо этого Scala обрабатывает статические члены класса Y как члены одноэлементного объекта Y
Таким образом, кажется, что вы можете определить класс внутри объекта, но не статический класс, определенный внутри класса.
Не уверен, что я полностью понял ваш вариант использования ... Если это может вам помочь, объекты внутри классов видны как поля экземпляра, например
case class C(var x: Int)
class A { case object b extends C(0) }
val a = new A
println(a.b.x)
a.b.x = 2
println(a.b.x)
Более того, вы можете полностью переопределить родительский val с объектом:
case class C(var x: Int)
class A { val y: C = C(0) }
class B extends A { override case object y extends C(2) }
val a: A = new B
println(a.y.x)
В scala, если вам нужно создать несколько статических методов, вы можете использовать сопутствующий объект с тем же именем класса, где вы храните все псевдостатические методы. Пример:
class A {
}
object A {
def xpto // define some pseudo static methods here..
}
Тогда вы можете просто использовать A.xpto
.
Попробуйте узнать больше о дополнительных модулях на scala