我有一个问题,我有两个独立的,有两个不同的控制器,像这样:
<div ng-app='demoApp'>
<div ng-controller='FirstCtrl'>
{{date | date:'yyyy-MM-dd hh:mm:ss'}}
</div>
<div ng-controller='SecCtrl'>
<button type="submit" ng-click="update()" >Add</button>
</div>
</div>
当我点击第二个控制器的按钮时,我想更新第一个控制器中的日期。
这是jsfiddle:http://jsfiddle.net/wa8nsh9j/9/
答案 0 :(得分:0)
您可以通过在AngularJS中使用工厂来实现这一目标:
demoApp.factory('DataFactory', function(a) {
return {
dateVal : null
}
});
demoApp.controller("FirstCtrl", function(DataFactory) {
//$scope.date = DataFactory.dateVal; //->This wont work
$scope.date = DataFactory;
});
demoApp.controller("SecCtrl", function(DataFactory) {
$scope.update = function() {
DataFactory.dateVal = new Date();
}
});
&#13;
HTML更新:
<div ng-controller='FirstCtrl'>
{{date.dateVal | date:'yyyy-MM-dd hh:mm:ss'}}
</div>
&#13;
答案 1 :(得分:0)
如果您执行$scope.date = new Date()
,则替换对日期属性的引用,因此其他控制器不再跟踪它。您必须在$ scope.model属性中存储对UpDate服务的引用以克服此问题。
angular.module('demoApp', [])
.controller('FirstCtrl', function($scope, UpDate){
$scope.model = UpDate;
})
.controller('SecCtrl', function($scope, UpDate){
$scope.model = UpDate;
$scope.update = function () {
$scope.model.date = new Date();
};
})
.service('UpDate', function(){
this.date = new Date();
});