Changing $scope variable value in controller not changing value on view
I am working on Cordova tool and angularjs for my application.
cordovaApp.controller("VacationCtrl", function ($scope, $http, $location) {
$scope.tempdate = "2222";
$scope.ruleDetails = function () {
$scope.tempdate = "3333";
}
});
view 1
<div ng-controller="VacationCtrl">
<a ng-repeat="data in rules" ng-click="ruleDetails()" class="summaryListBorder" href="#detailVacationRule">
</a>
</div>
view 2
<div ng-controller="VacationCtrl">
{{tempdate}}
</div>
In above given code, I sat value of $scope.tempdate
to "2222". When I am click on link, it calls ruleDetails()
and set $scope.tempdata = "3333".
But when the new page is open with ng-view
, it shows only old value, ie "2222". I want to change it with "3333". I have tried with $scope.$apply()
too.
Thanks.
Every ng-controller
attribute creates a new instance of the controller, which won't share the same scope as other instances. You want to wrap both div
s in a single controller instance, like:
<div ng-controller="VacationCtrl">
<div>
<a ng-click="ruleDetails()" href="#detailVacationRule">
</a>
</div>
<div>
{{ tempdate }}
</div>
</div>
If you need separate controllers, then you want to move common functions/fields into a service, which operates as a singleton so you can use it to share information between controllers. Or you could contain the separate controller instances in a parent controller, which will hold common fields and can be accessed through each controller's scope.
链接地址: http://www.djcxy.com/p/77542.html上一篇: 交叉控制器计算