9

styleプロパティが更新されない理由がわからないようです。私のより大きなアプリケーションでは、うまく機能しているようです。

angular.module('Model', [])
    .factory('SizeModel', function () {
        return {
            width: 200,
            height: 100,
            display:"block",
            getCombined: function() {
                return parseInt(this.width) + parseInt(this.height);
            }
        };
    });

function AlbumCtrl($scope,SizeModel) {
    $scope.master = SizeModel;
    $scope.$watch("master",function(){
    $scope.myprop = { display: $scope.master.display,
                      backgroundColor: "#333",
                      width: $scope.master.width+'px',
                      height: $scope.master.height+'px',
                      color: "#FFF"
                     };
        });

}

function AnoCtrl($scope,SizeModel) {
    $scope.master = SizeModel;

    $scope.toggle = function(){
        $scope.master.display = "none";
    }
}

function EditCtrl($scope,SizeModel) {
    $scope.master = SizeModel;
}

http://jsfiddle.net/ganarajpr/C2hRa/4/

これが私が現在直面している問題を示すフィドルです。入力を変更すると、divで幅と高さが更新されていることがわかります。しかし、スタイル自体は更新されていないようです。ここで私が間違っていることを誰かに教えてもらえますか?

次のすべてのシナリオを試しました

  1. using$scope。$apply..-$applyがすでに進行中であることを示すエラーをスローします。
  2. $rootScope。$apply-上記と同じ。
  3. 他のコントローラーで$watchedされているサービスに別の変数を設定します。-変化は見られません。

誰かが私にこれに対する答えを得ることができれば本当にクールでしょう。また、正確に更新されていない理由を教えていただければ幸いです。

4

2 に答える 2

12

幅と高さの値を myprop スタイル フィールドに 1 回限り割り当てました。したがって、幅または高さを変更しても、myprop は変更されませんでした。

myprop 値を代わりにその値を計算する関数に変更します...

http://jsfiddle.net/DyHHJ/

于 2012-05-24T12:02:12.200 に答える