在控制器中更改$scope变量的值不会改变视图上的值。
在控制器中更改$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()
,但没有成功。
谢谢。
在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)
谢谢,目前我为不同的功能创建了不同的控制器,它们正在工作中... 谢谢