3

JSON データソースからユーザーの配列を AngularJS モデルに取り込みます。このデータはテーブルにレンダリングされています。基になるデータ サービスを変更せずに、既存のユーザー オブジェクトの 2 つの値から計算される列を作成したいと考えています。

// My model
function UserListCtrl($scope,$http) {
$http.get('users').success(function(data) {
    $scope.users = data;
});
};

私の部分的なテンプレートでは、次のようなことができることがわかっています。

 <tr ng-repeat="for user in users">
    <td>{{user.data / user.count | number:2}}</td>
 </td>

しかし、そのフィールドをモデルに追加したいので、次のように使用できます。

<td>{{user.amplification}}</td>

モデル内のすべてのユーザーに「増幅」フィールドを追加するにはどうすればよいですか?

余談ですが、次のorderByようなものでフィルターを使用することは可能ですか:

<td>{{user.data / user.count | number:2}}</td>
4

4 に答える 4

2

あなたは食べることができます:

  1. ユーザーをロードした直後に:

    $http.get('users').success(function(data) { $scope.users = data; $scope.user.amplification() = function() { return $scope.user.data / $scope.user.カウント; } });

そして次のように使用します{{user.amplification()}}

  1. コントローラのどこでも:

    $scope.$watch('user', function() { $scope.userAmplification = $scope.user.data / $scope.user.count; }, true); $http.get

  2. または、user.data/count が変わらない場合は、1 と同じですが、静的に計算します。

    $http.get('users').success(function(data) { $scope.users = データ; $scope.user.amplification = $scope.user.data / $scope.user.count; });

またOrderBy、任意の式で使用できます (他のフィルターの結果を除く)

于 2013-01-23T21:05:12.923 に答える
1

およびプロパティamplicification()の更新時に関数を更新する必要がない場合は、コントローラーで次のようにすることができます。datacountuser

$scope.users.forEach(function(user) {

    user.amplification = function() {

        return user.data / user.count;

    };

});
于 2013-06-24T21:09:15.427 に答える
0

私にとってうまくいったのは、ループを追加し、そのループ内の各項目にプロパティを追加することでした。コントローラーのプロパティを使用しましたが、質問でアプローチしている方法でスコープを使用できると確信しています。

function(result) {
    self.list = result;
    angular.forEach(self.list, function(item) {
        item.hasDate = function() {
            return this.TestDate != null;
        }.bind(item); // set this context 
    });
}

次に、マークアップでこのように使用しました。

<div ng-repeat...>
    <div ng-show="item.hasDate()">This item has a date.</div>
</div>
于 2014-06-28T11:17:20.293 に答える