0

Windows 8 のメトロ JavaScript アプリでデータバインディングに問題があります。

on *ビルド xxxx *

結びつけたい価値を創造する

var someValue = WinJS.Binding.as({ primitive : 1 }); 

私は実際にこれをグローバルスコープに入れて、物事を除外しました

次に、単純なコールバックを設定して、この値を 5 秒ごとに更新します。

setInterval(function () { someValue. primitive++ }, 5000);
WinJS.Binding.processAll();

これは、ページ js ファイルの ready 関数にあります。

次に、HTML ファイルに単純な h1 タグを追加します。

<h1 data-win-bind="innerText : someValue.primitive">Test</h1>

このページを実行すると、最初にデータバインドが実行されるため、h1 タグには 1 が表示されますが、それ以外は表示されません。コールバックはヒットし、いつでも someValue を調べることができ、正しく見えます。someValue オブジェクトで setProperty と updateProperty を使用してみましたが、違いはありません。

私はどんな提案にも感謝します。ありがとう!

4

1 に答える 1

0

これはグローバルの問題のようです。他にもいくつか試してみましたが、グローバル スコープを持つオブジェクトにデータ バインドできないようです。

<h1 data-win-bind="innerText : variable">Test</h1>

「変数」をグローバルにすることはできません。バインドしている変数がグローバルスコープを持っている場合、それは壊れるだけです。

ただし、名前空間だけが variable.variable である場合は機能しますが、名前空間が付けられているため、これをデータコンテキストとして渡す必要があります。

WinJS.Binding.processAll(document.body, variable)

私の問題は、ViewModel.Login、ViewModel.Basket オブジェクトがあり、ViewModel をバインドしてから、関連するセクションを必要なビットにバインドすることでした。

// ViewModel.Test.test.guidePrice = "£3.00";

作品 <h1 data-win-bind="innerText : test.guidePrice">Test</h1> WinJS.Binding.processAll(document.getElementById('basketPrice'),ViewModel.Test);

動作しません <h1 data-win-bind="innerText : Test.test.guidePrice">Test</h1> WinJS.Binding.processAll(document.getElementById('basketPrice'),ViewModel);

これが同じ/類似の問題を抱えている人に役立つことを願っています!

于 2012-05-16T08:47:56.757 に答える