質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

AngularJS

AngularJSはオープンソースのJavaScriptフレームワークです。ブラウザ上で動作するウェブアプリケーションの開発にMVCアーキテクチャを取り入れることを目的としています。

Onsen UI

HTML5で記述されたモバイルアプリの高速化、およびネイティブアプリライクなUIが作れるフレームワーク。 様々なJavaScriptフレームワークと併せて使用することができます。スマートフォン向けアプリ、Webサイトに必要なアニメーション、UI/UXを実装することが可能になります。

Monaca

「Monaca」はiOS、Android、Windows向けのアプリ開発に対応した、Cordovaベースのモバイルアプリ開発プラットフォームです。HTML5、JavaScriptといったWeb標準技術を用いてモバイルアプリ開発を行うことができます。

Q&A

解決済

1回答

3135閲覧

OnsenUIを使っています。Cannot read property '0' of nullというエラーメッセージの対策方法

poooooo

総合スコア125

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

AngularJS

AngularJSはオープンソースのJavaScriptフレームワークです。ブラウザ上で動作するウェブアプリケーションの開発にMVCアーキテクチャを取り入れることを目的としています。

Onsen UI

HTML5で記述されたモバイルアプリの高速化、およびネイティブアプリライクなUIが作れるフレームワーク。 様々なJavaScriptフレームワークと併せて使用することができます。スマートフォン向けアプリ、Webサイトに必要なアニメーション、UI/UXを実装することが可能になります。

Monaca

「Monaca」はiOS、Android、Windows向けのアプリ開発に対応した、Cordovaベースのモバイルアプリ開発プラットフォームです。HTML5、JavaScriptといったWeb標準技術を用いてモバイルアプリ開発を行うことができます。

0グッド

0クリップ

投稿2016/09/13 15:07

OnsenUIを使いスマホアプリ開発を行っています。

**<ons-pull-hook>**のタグを使うようになってから、Cannot read property '0' of null ~ というエラーがどうしても出てしまい、原因をつきとめることができておりません。
出るのはページ遷移時で、必ず出るといったわけでも、決まったページで出るといったわけでもなく、2回に1回くらいのペースでランダムに出てきます。

JavaScript

1 $scope.load = function($done) { 2 $timeout(function() { 3 var fd = new FormData(); 4 fd.append('username', ユーザーネーム); 5 fd.append('password', パスワード); 6 $http.post(host + 'json/login/', fd,{ 7 transformRequest: null, 8 headers: {'Content-type':undefined} 9 }) 10 .success(function(res){ 11 if(res !== null) { 12 Login.set(res); 13 $rootScope.login_id = res.id; 14 $rootScope.login_username = res.username; 15 $rootScope.login_password = res.password; 16 localStorage.setItem('id', res.id); 17 localStorage.setItem('username', res.username); 18 localStorage.setItem('password', res.password); 19 } 20 }) 21 .finally(function() { 22 $done(); 23 }); 24 }, 500); 25});

HTML

1 <ons-pull-hook ng-action="load($done)" var="loader"> 2 <span ng-switch="loader.getCurrentState()"> 3 <span ng-switch-when="initial"><ons-icon size="35px" icon="ion-arrow-down-a"></ons-icon></span> 4 <span ng-switch-when="preaction"><ons-icon size="35px" icon="ion-arrow-up-a"></ons-icon></span> 5 <span ng-switch-when="action"><ons-icon size="35px" spin="true" icon="ion-load-d"></ons-icon> 更新中...</span> 6 </span> 7</ons-pull-hook>

上記の記述を追加してからエラーが出るようになり、削除すると出なくなります。
他のコントローラーには記述的な問題はないかと思われます...

エラーメッセージ全文は下記の通りです。
loader.jsはMonacaでもともと用意されているjsファイルです。

動作自体に支障はないのですが、常にエラーメッセージが出ていると少し気になります。

どなたかご教授いただけますと幸いです。

TypeError: Cannot read property '0' of null at Class._getState (file:///data/data/mobi.monaca.debugger/files/projects/cloud/57cd1101fd17349b08b593ce/www/components/loader.js:1462:11366) at Class.getCurrentState (file:///data/data/mobi.monaca.debugger/files/projects/cloud/57cd1101fd17349b08b593ce/www/components/loader.js:1462:11432) at Object.fn [as get] (eval at compile (file:///data/data/mobi.monaca.debugger/files/projects/cloud/57cd1101fd17349b08b593ce/www/components/loader.js:1455:15219), <anonymous>:4:254) at Scope.$digest (file:///data/data/mobi.monaca.debugger/files/projects/cloud/57cd1101fd17349b08b593ce/www/components/loader.js:1453:6683) at Scope.$apply (file:///data/data/mobi.monaca.debugger/files/projects/cloud/57cd1101fd17349b08b593ce/www/components/loader.js:1453:9117) at HTMLSpanElement.listener (file:///data/data/mobi.monaca.debugger/files/projects/cloud/57cd1101fd17349b08b593ce/www/components/loader.js:1464:27782) at HTMLSpanElement.eventHandler (file:///data/data/mobi.monaca.debugger/files/projects/cloud/57cd1101fd17349b08b593ce/www/components/loader.js:1450:138) www/components/loader.js:1452 SOL26TypeError: Cannot read property '0' of null at Class._getState (file:///data/data/mobi.monaca.debugger/files/projects/cloud/57cd1101fd17349b08b593ce/www/components/loader.js:1462:11366) at Class.getCurrentState (file:///data/data/mobi.monaca.debugger/files/projects/cloud/57cd1101fd17349b08b593ce/www/components/loader.js:1462:11432) at Object.fn [as get] (eval at compile (file:///data/data/mobi.monaca.debugger/files/projects/cloud/57cd1101fd17349b08b593ce/www/components/loader.js:1455:15219), <anonymous>:4:254) at Scope.$digest (file:///data/data/mobi.monaca.debugger/files/projects/cloud/57cd1101fd17349b08b593ce/www/components/loader.js:1453:6683) at Scope.$apply (file:///data/data/mobi.monaca.debugger/files/projects/cloud/57cd1101fd17349b08b593ce/www/components/loader.js:1453:9117) at HTMLSpanElement.listener (file:///data/data/mobi.monaca.debugger/files/projects/cloud/57cd1101fd17349b08b593ce/www/components/loader.js:1464:27782) at HTMLSpanElement.eventHandler (file:///data/data/mobi.monaca.debugger/files/projects/cloud/57cd1101fd17349b08b593ce/www/components/loader.js:1450:138)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

同様の現象か確定は出来ませんが以下の様な不具合と暫定対応案があったので貼っておきます。
https://github.com/OnsenUI/OnsenUI/issues/1439#issue-158139799

内容はタブバーで画面を切り替えたりons-pull-hookを非表示にするとangularjs側で無くなった事を検知できずにエラーとなっている?
対応はon-pull-hookのloader.getCurrentState()を呼ぶ前に自作の存在チェック関数pullhookcheck()をかますことでエラーを発生させないようにしているようです。

こちらで再現させていないので勝手な想像になってしまいますが
タブで画面を切り替えている場合「<ons-tab persistent>」を指定する、
ng-ifを利用している場合はng-hideに変更することでエラーが出なくなるかもしれません。

投稿2016/09/13 16:18

pinpikokun

総合スコア376

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

poooooo

2016/09/14 06:35

いつもありがとうございます。 アドバイスいただきましたことを反映させていくうちに発覚したのですが、どうやらpopPage()もしくは<ons-back-button>で戻ったあとで、また別のページを開いた際にエラーが発生しているようでした。 最小限のテンプレートでも事象を確認できました。 同じ事象がないか検索してみていますが、類似するものが見当たりませんでした...^^; 運営の技術相談へ問い合わせたほうがよいでしょうか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問