アプリケーションの上で angularJS を使用しています。
コントローラーの基本的な例があります。
function OrderListCtrl($scope, $http) {
$http.get('/static/angular/app/phones/van1.json').success(function(data) {
$scope.van1 = data;
});
$http.get('/static/angular/app/phones/van2.json').success(function(data) {
$scope.van2 = data;
});
}
そして、サンプルの JSON エントリ
{
"id": "3",
"custName": "Mrs Smith",
"accountNumber": "416",
"orderNumber": "12348",
"orderWeight": "120.20"
},
私のhtmlは次のようになります:
<div id=1>
<h1>Van 1 - Total Weight = XXX </h1>
<ul class="sortdrag">
<li ng-repeat="van1 in van1" id="[[ van1.id ]]">
[[van1.custName]] [[van1.accountNumber]] [[van1.orderWeight]]
</li>
</ul>
</div>
ここで、ul 内のすべての li アイテムの総重量を取得したいと考えています。
リストが静的である場合、これは簡単ですが、リストはjQuery-uiを使用しており、liアイテムが各リスト間でドラッグアンドドロップされる複数のリストがあります。私の質問は、XXX を ul の各 li のすべての重みの値に動的に更新するにはどうすればよいですか?
これは事前入力されたリストでは機能しないため、実際には onDrop イベントを使用したくありません。理想的には、ul 内のすべての van1.orderWeight 値から値を取得するコードを使用したいと考えています。
これにアプローチするための最良の方法に関する提案は、非常に高く評価されます! 私は jinja2 テンプレートを使用しているため、誰かが {{ と }} ではなく [[ と ]] を使用して私に尋ねる前に。
アップデート:
以下の回答を読んだ後、元のコントローラーを次のように修正しました。
function OrderListCtrl($scope, $http) {
$http.get('/static/angular/app/phones/van1.json').success(function(data) {
$scope.van1 = data;
// This part is easy, calcuate the sum of all weights from the JSON data
$scope.sumV1 = _.reduce(_.pluck($scope.van1, 'orderWeight'), function (m, w) {return m + w}, 0);
});
$scope.getVan1Weight = function(){
// here I try and write a function to calculate the dynamic weight
// of a van, which will update when items get dropped in/out of the ul
_.reduce(_.pluck($scope.van1, 'orderWeight'), function (m, w) {return m + w}, 0);
}
そして私のテンプレート
<div id="app" ng-controller="OrderListCtrl">
<div id=1>
<h1>Van 1 - Total Weight = [[getVan1Weight()]]
Starting Weight - [[sumV1]]</h1>
<ul class="sortdrag">
<li ng-repeat="van1 in van1" id="[[ van1.id ]]">
[[van1.custName]] [[van1.accountNumber]] [[van1.orderWeight]]
</li>
</ul>
</div>
現在、計算の実行を支援するためにunderscorejsライブラリを使用していますが、初期データを使用してこれを機能させることしかできず、新しい注文が別のulからドラッグされたときに更新されないようです