小编Ada*_*hes的帖子

[(ngModel)]绑定总是字符串吗?

考虑角度应用程序中的radiobutton HTML元素,

  <div class="radio">
    <label>
      <input type="radio" name="approvedeny" value="true" [(ngModel)]=_approvedOrDenied>
      Approve
    </label>
  </div>
Run Code Online (Sandbox Code Playgroud)

在我们的组件上,该_approvedOrDenied属性被声明为布尔值.

@Component({   
export class ApprovalsComponent implements OnInit {
  _approvedOrDenied: boolean;
Run Code Online (Sandbox Code Playgroud)

但是,当单步执行客户端代码时,会将其设置为字符串.我的代码中没有可以执行此操作的强制转换,看起来像angular会自动执行此操作.

在此输入图像描述

是否所有数据绑定属性都以角度形式返回为字符串?如果是这样,那么_approvedOrDenied: boolean在打字稿中声明类型有什么意义呢?

javascript typescript angular

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

Kotlin 接口可以缓存值吗?

我真的很喜欢在 Kotlin 中使用接口的默认实现,尤其是像 Observable 这样的常见模式。这是我的界面,

interface Observable<T>{

    // How do I cache this?
    val observers: MutableList<Observer<T>>
        get() = LinkedList<>()

    fun addObserver(o:Observer<T>){
        observers.add(o)
    }

    fun removeObserver(o:Observer<T>){
        observers.remove(o)
    }

    fun notifyObservers(u:T){
        for (o in observers){
            o.update(u)
        }
    }

}
Run Code Online (Sandbox Code Playgroud)

该接口引用了 的列表observers,但调用每次get()都会返回一个新的。LinkedList()如何缓存 的值observers以便仅创建一次?我尝试过使用kotlin-lazy,但要么无法获得正确的语法,要么它不适用于接口。我的 IDE 抱怨“接口中不允许使用委托属性。”

更新

根据 Yoav 的回答,我已将界面更改为

interface Observable<T>{
    val observers: MutableList<Observer<T>>
}
Run Code Online (Sandbox Code Playgroud)

然后在实现类中,

class MyObservable : Observable<String>

   private val _observers = LinkedList<Observer<String>>()

   override val observers: MutableList<Observer<String>>
       get() = _observers
Run Code Online (Sandbox Code Playgroud)

有什么技巧可以让这个更简洁吗?

java observable kotlin

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

Spring注释可以访问方法参数吗?

考虑一个UrlValidator方法注释,该注释在调用方法之前测试给定的URL是否有效。

@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface UrlValdator{
    String value();
}
Run Code Online (Sandbox Code Playgroud)

当路由是静态的并且提前知道时,这可以正常工作。例如:

@UrlValidator("http://some.known.url")
public void doSomething();
Run Code Online (Sandbox Code Playgroud)

但这不是很灵活。例如,如果路由在doSomething()方法签名中是隐式的,该怎么办?我可以以某种方式通过Spring Expression Language或其他方式访问它吗?例如,这不起作用,但这是我要拍摄的

@UrlValidator("#p1")
public void doSomething(String url)
Run Code Online (Sandbox Code Playgroud)

要么

@UrlValidator("#p1.url")
public void doSomething(Request request)
Run Code Online (Sandbox Code Playgroud)

是否可以通过这种方式使注释动态化?

有关

这是我找到的最接近的东西,但是线程很旧,可以接受的答案非常麻烦/难以遵循。是否有一个最小的工作示例/更新的方式来做到这一点?

java spring annotations

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

anaconda(python)中是否有GUI框架?

我一直在研究python并寻找安装和使用我可以使用的GUI框架的方法.我读过本机tkinter,QtPy,Kivy,wxPython等,但是在安装它们时遇到了问题.最近我读到了关于Anaconda的内容,并想尝试一下.但它是否会解决我的GUI框架问题?我在列表中看到了一些框架,但不确定,其中一个是GUI框架.或者是他们没有包含GUI框架(当然除了tkinter)

python anaconda

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

如何在kotlin中替换::new?

按照 Java 中的 Disruptor 教程,他们进行了以下调用

Disruptor<LongEvent> disruptor = new Disruptor<>(LongEvent::new, bufferSize, executor);
Run Code Online (Sandbox Code Playgroud)

其中LongEvent使用无参数的默认构造函数进行实例化 - 即。new LongEvent()

Kotlin 中的等效行会在::new. Kotlin 中正确的语法是什么::new

# THIS IS INVALID
val disruptor = Disruptor<LongEvent>(LongEvent::new, bufferSize, executor)
Run Code Online (Sandbox Code Playgroud)

java kotlin

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