RxDom:创建新ID时无效

时间:2016-10-11 13:43:53

标签: javascript ajax rxjs rxjs-dom

我正在使用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通知这一点。

感谢。

1 个答案:

答案 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。