2016-09-23 7 views
0

ObservableArrayをListViewにバインドしようとするたびにクラッシュするNativeScriptアプリケーションがあります。NativeScript Appデータバインディングクラッシュ

私がstandings.jsファイルの9行目をコメントアウトすると、ログイン機能が実行され、読み込み機能が実行されますが、その行のコメントを外すとアプリケーション全体がクラッシュし、ログイン機能が実行されなくなります。

var dialogsModule = require("ui/dialogs"); 
var Observable = require("data/observable").Observable; 
var ObservableArray = require("data/observable-array").ObservableArray; 
var StandingsListViewModel = require("../../shared/view-models/standings-list-view-model"); 
var page; 

var standingsList = new StandingsListViewModel([]); 
var pageData = new Observable({ 
    standingsList: standingsList 
}); 

exports.loaded = function(args) { 
    page = args.object; 
    page.bindingContext = pageData; 

    standingsList.load(); 
}; 

standings.xml:

<Page loaded="loaded"> 
<GridLayout rows="auto, *" columns="2*, *"> 
    <Label id="header" text="Standings" colSpan="2" horizontalAlignment="center"/> 

    <ListView items="{{ standingsList }}" id="standingsList" row="1" colSpan="2"> 
     <ListView.itemTemplate> 
      <Label text="{{ place }}" horizontalAlignment="left" verticalAlignment="center"/> 
      <Label text="{{ username }}" col="2" horizontalAlignment="left" verticalAlignment="center"/> 
     </ListView.itemTemplate> 
    </ListView> 
</GridLayout> 
</Page> 

、順位リストビュー-model.js:

var config = require("../../shared/config"); 
var fetchModule = require("fetch"); 
var ObservableArray = require("data/observable-array").ObservableArray; 

function StandingsListViewModel(items) { 
var viewModel = new ObservableArray(items); 

viewModel.load = function() { 
    console.log("hit"); 
    var url = config.apiURI + "getStandings.cfm?weekid=397"; 
    return fetch(url) 
    .then(handleErrors) 
    .then(function(data) { 
     var parsedData = JSON.parse(data._bodyInit); 
     var users = parsedData.users; 
     users.forEach(function(standing) { 
      viewModel.push({ 
       place: standing.place, 
       username: standing.username 
      }); 
     }); 
     console.log(viewModel._array[0].username); 
    }) 
    .catch(function(error) { 
     console.log("ERROR: " + error); 
    }); 
}; 

return viewModel; 

} 

function handleErrors(response) { 
    if (!response.ok) { 
     console.log(JSON.stringify(response)); 
     throw Error(response.statusText); 
    } 
    return response; 
} 

module.exports = StandingsListViewModel; 

すべてのヘルプやアイデアここ

はstandings.jsですどのようにデバッグするかについては大いに感謝します。

答えて

0

ここに問題があると思いますvar standingsList = new StandingsListViewModel([]);newを使用すると、可変型のオブジェクトが作成されます。しかし、ここではを関数として定義しましたが、おそらくstandingListが期待通りに返されないクラスではありません。その行を次のように置き換えます。

var standingsList = StandingsListViewModel([]); 
+0

返信ありがとうございますが、私はまだ同じエラーが発生しています。私はこれらのデータ構造をどこでより詳細に調べることができるのか分かりますか?私は解決策がどこかにあると確信しています。 – SunnyBCC