在控制器中更改 $scope 变量值而不更改视图中的值
Changing $scope variable value in controller not changing value on 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
的值设置为“2222”。当我点击 link 时,它调用 ruleDetails()
并设置 $scope.tempdata = "3333".
但是当使用 ng-view
打开新页面时,它只显示旧值,即“2222”。我想用“3333”来改变它。我也试过 $scope.$apply()
。
谢谢。
每个 ng-controller
属性都会创建一个新的控制器实例,该实例不会与其他实例共享相同的范围。您希望将两个 div
包装在一个控制器实例中,例如:
<div ng-controller="VacationCtrl">
<div>
<a ng-click="ruleDetails()" href="#detailVacationRule">
</a>
</div>
<div>
{{ tempdate }}
</div>
</div>
如果您需要单独的控制器,那么您希望将公共 functions/fields 移动到一个服务中,该服务作为单例运行,以便您可以使用它在控制器之间共享信息。或者您可以在父控制器中包含单独的控制器实例,父控制器将包含公共字段并且可以通过每个控制器的范围访问。
我正在为我的应用开发 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
的值设置为“2222”。当我点击 link 时,它调用 ruleDetails()
并设置 $scope.tempdata = "3333".
但是当使用 ng-view
打开新页面时,它只显示旧值,即“2222”。我想用“3333”来改变它。我也试过 $scope.$apply()
。
谢谢。
每个 ng-controller
属性都会创建一个新的控制器实例,该实例不会与其他实例共享相同的范围。您希望将两个 div
包装在一个控制器实例中,例如:
<div ng-controller="VacationCtrl">
<div>
<a ng-click="ruleDetails()" href="#detailVacationRule">
</a>
</div>
<div>
{{ tempdate }}
</div>
</div>
如果您需要单独的控制器,那么您希望将公共 functions/fields 移动到一个服务中,该服务作为单例运行,以便您可以使用它在控制器之间共享信息。或者您可以在父控制器中包含单独的控制器实例,父控制器将包含公共字段并且可以通过每个控制器的范围访问。