0

私は自分のアプリケーション用に Cordova ツールと angularjs に取り組んでいます。

cordovaApp.controller("VacationCtrl", function ($scope, $http, $location) {
        $scope.tempdate = "2222";
        $scope.ruleDetails = function () {
        $scope.tempdate = "3333";
    }
});

ビュー 1

<div ng-controller="VacationCtrl">
    <a ng-repeat="data in rules" ng-click="ruleDetails()" class="summaryListBorder" href="#detailVacationRule">
    </a>
</div>

ビュー 2

<div ng-controller="VacationCtrl">
    {{tempdate}}
</div>

上記のコードでは$scope.tempdate、「2222」までの値を設定しました。リンクをクリックすると呼び出さruleDetails()れて設定され$scope.tempdata = "3333".ますが、 で新しいページを開くとng-view、古い値、つまり「2222」しか表示されません。「3333」に変更したいです。私も試してみまし$scope.$apply()た。

ありがとう。

4

1 に答える 1

2

すべてng-controllerの属性は、コントローラーの新しいインスタンスを作成します。これは、他のインスタンスと同じスコープを共有しません。div次のように、両方の を 1 つのコントローラー インスタンスにラップします。

<div ng-controller="VacationCtrl">
    <div>
        <a ng-click="ruleDetails()" href="#detailVacationRule">
        </a>
    </div>

    <div>
        {{ tempdate }}
    </div>
</div>

個別のコントローラーが必要な場合は、共通の機能/フィールドをサービスに移動する必要があります。これはシングルトンとして動作するため、コントローラー間で情報を共有するために使用できます。または、共通のフィールドを保持し、各コントローラーのスコープからアクセスできる親コントローラーに個別のコントローラー インスタンスを含めることもできます。

于 2015-02-02T09:31:15.187 に答える