更改控制器中的$ scope变量值而不更改视图上的值

时间:2015-02-02 09:24:10

标签: angularjs cordova angularjs-scope ng-view

我正在为我的应用程序开发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的值设置为&#34; 2222&#34;。当我点击链接时,它会调用ruleDetails()并设置$scope.tempdata = "3333".但是当新页面以ng-view打开时,它只显示旧值,即&#34; 2222&#34; 。我想用&#34; 3333&#34;来改变它。我也试过了$scope.$apply()

感谢。

1 个答案:

答案 0 :(得分:2)

每个ng-controller属性都会创建一个控制器的新实例,该实例不会与其他实例共享相同的范围。您希望将div包装在单个控制器实例中,例如:

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

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

如果您需要单独的控制器,那么您希望将常用功能/字段移动到服务中,该服务作为单身操作,因此您可以使用它在控制器之间共享信息。或者您可以在父控制器中包含单独的控制器实例,它将保存公共字段,并且可以通过每个控制器的范围进行访问。