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

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

谢谢。


每个ng-controller属性都会创建一个ng-controller的新实例,它不会与其他实例共享相同的作用域。 您想要将两个div都包装在单个控制器实例中,如:

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

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

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

链接地址: http://www.djcxy.com/p/77541.html

上一篇: Changing $scope variable value in controller not changing value on view

下一篇: AngularJS : Service variable changes not applying