AngularJSの世界に比較的新しい、それまで楽しんでいます。
しかし、私は自分のdb内のエントリをループする試みに苦労しており、それぞれについて<canvas>
をレンダリングしています。AngularJS ng-repeat:ループ内にキャンバスを動的にレンダリング/バインドします。
が、これは私のデータ(簡潔にするために短縮)であると言う:
app.factory('paintings', ['$http', function($http) {
var o = {
paintings: []
};
o.getAll = function() {
return $http.get('/paintings')
.success(function(data) {
angular.copy(data, o.paintings);
});
}
return o;
}]);
私は、各エントリをループしたいとして構築しています:工場でコントローラにロードされ
var paintings = [
{ "_id" : ObjectId("31c75"), "data" : "0,0,0,0" },
{ "_id" : ObjectId("deadb"), "data" : "1,3,0,255" }
];
要素<canvas>
を入力し、<canvas>
要素をdata
という別のオブジェクト(Grid
)に引数として渡します。これによりコンテキストに基づいて、そのデータに基づいて<canvas>
が描画されます。
シンプルですね。残念ながら、私はそのようにする方法を失っており、より鋭敏な質問をするための言葉を持っていません。
まだレンダリングされていないインラインテンプレートを使用しているという事実に問題があると思います。
HTML::
<div ng-repeat="painting in paintings" some-directive-maybe="bindCanvas(painting._id)">
<canvas id="{{ painting._id }}" width="800" height="400"></canvas>
</div>
JS:
app.controller('PaintingCtrl', [
'$scope',
function($scope) {
$scope.bindCanvas(canvasId) {
var grid = new Grid(document.getElementById(canvasId));
// Have fun with grid
}
}
]);
は、StackOverflowの私を助けて
これは、一般的に私は現在試みているアプローチです。あなたは私の唯一の希望です...
あなたの絵が範囲$のようなscope.paintingsに定義されたオブジェクトでのコードの下に追加しますか? –
@RaviTeja:最近の編集に含まれている工場で$ scopeにコピーする必要があります。 – asgaines
私は自分の答えを更新しました。見てみな。 –