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

11 浏览
0 Comments

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

我正在使用Cordova工具和angularjs开发我的应用程序。

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

视图1

    
    

视图2

    {{tempdate}}

在上面的代码中,我将$scope.tempdate的值设为"2222"。当我点击链接时,它调用ruleDetails()并将$scope.tempdata = "3333"。但是当新页面使用ng-view打开时,它只显示旧值,即"2222"。我想要将其更改为"3333"。我还尝试了$scope.$apply(),但没有成功。

谢谢。

0
0 Comments

在AngularJS中,每个ng-controller属性都会创建一个新的控制器实例,这个实例的作用域与其他实例不共享。如果你希望两个div共享同一个控制器实例,可以将它们放在同一个ng-controller下面。如果你需要使用不同的控制器实例,可以将共享的函数和字段移动到一个服务中,服务作为单例可以在不同的控制器之间共享信息。或者你可以将不同的控制器实例放在一个父控制器中,父控制器中存储共享的字段,可以通过每个控制器的作用域访问。

如果你不这样做,tempdate的值将不会改变,href将始终默认为$scope.tempdate初始化为2222的值。

如果你想根据用户点击的记录打开其他视图,你应该这样做。如果你有任何有效的示例,请告诉我。

在Angular中有很多种解决方法,所以很难在不了解你具体问题的情况下给出一个解决方案。不过你可以参考这个Stack Overflow的答案,如果你还不确定的话,请告诉我:[stackoverflow.com/a/11938785/4044584](http://stackoverflow.com/a/11938785/4044584)

谢谢,目前我为不同的功能创建了不同的控制器,它们正在工作中... 谢谢

0