1

tableCells が変更されたときに ng-init が更新される方法はありますか? このアプローチ (または同様のアプローチ) を使用したいので、angular は findCellsByDate を 2 回呼び出す必要はありません。

私も ng-bind または ng-model で ng-init を変更しようとしましたが、bind は [object Object] を表示し、モデルは属性がないためエラーをスローします。

<span ng-init='cells = findCellsByDate(tableCells, day)'>
    <div class='text' ng-show='forecastAndActualForCellsAreNotEmpty(cells)'>
        <span ng-bind='getTotalHoursPercentageForCells(cells)'></span>
        <span>%</span>
    </div>
</span>
4

2 に答える 2

0

私は ng-init がそのように機能するとは思わないので、私が考えているのは、コントローラー/モデルコードの一部を変更して、forecastAndActualForCellsAreNotEmpty更新されるブール値を保持する必要があるということです。

一方、cssでそれを行うこともできます。if forecastAndActualForCellsAreNotEmptyreturnsfalsegetTotalHoursPercentageForCells0 を返すと思います。したがって、それをデータ属性にバインドし、css ルールを使用して div をなくすことができます。ただし、使用しないためにはng-init、css でコンテンツも取得する必要があります。そして、私が知っている唯一の方法は、 と を使用すること:beforeです:after。何かのようなもの

    <div class='text' data-percentage='{{getTotalHoursPercentageForCells(findCellsByDate(tableCells, day))}}'>
    </div>

そしてcss

div[data-percentage=0]{
    display: none;
}

div[data-percentage]:before{
    content: attr(data-percentage) "%";
    display: block;
}

ここで、実際のアプリケーション コンテンツを表示するために:beforeorを使用するのではなく、スタイルに関連するものを使用します。:afterしたがって、代わりにモデルを変更することが最終的な推奨事項になると思います。

于 2013-09-11T09:07:52.540 に答える
0

変数を変更するロジックを、変更cellsを監視するウォッチ関数内に配置できます。tableCells variable

$scope.$watch('tableCells', function(tableCells) {
    if(!tableCells) return;

    $scope.cells = findCellsByDate(tableCells, $scope.day);        
});

このようにして、そのロジックをコントローラーに保持します

于 2013-09-11T11:18:05.200 に答える