我正在使用Reactive Extension DOM来侦听来自DOM的事件。这是我的示例代码:
var input = document.getElementById('test_id');
var source = Rx.DOM.change(input);
var subscription = source.subscribe(
function (x) {
console.log(x);
},
function (err) {
console.log('Error: ' + err);
},
function () {
console.log('Completed');
});
当test_id
完成时,document.ready
位于页面上时此代码有效。但是我正在使用AJAX请求,所以test_id
只会在客户端发送和接收ajax请求之后出现。如何让RxDom通知这一点。
感谢。
答案 0 :(得分:2)
您需要再次创建Observable。
当您致电E/AndroidRuntime: FATAL EXCEPTION: main
Process: earth.planet.passwordguard, PID: 32506
java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String java.lang.Object.toString()' on a null object reference
at earth.planet.passwordguard.Fragment1$1.onDataChange(Fragment1.java:74)
at com.google.firebase.database.Query$1.onDataChange(Unknown Source)
at com.google.android.gms.internal.zzajp.zza(Unknown Source)
at com.google.android.gms.internal.zzakp.zzcxi(Unknown Source)
at com.google.android.gms.internal.zzaks$1.run(Unknown Source)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5290)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:911)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:706)
且身份document.getElementById('test_id');
的元素不存在时,它会返回null。因此,没有办法刷新" test_id
可观察,因为它甚至不知道它应该是什么DOM元素"刷新"。
所以唯一的方法是在从Ajax调用中追加HTML后创建Observable。