我已經創建了一個服務來隔離業務邏輯,並將它注入到需要這些信息的控制器中。我最終想要做的是讓控制器能夠觀察服務中的值,以便我不必通過廣播/通知或複雜的消息傳遞解決方案來通知所有控制器數據更改服務。從控制器看服務中的值
我創建了一個plnkr,展示了我想要做的事情的基本概念。
http://plnkr.co/edit/oL6AhHq2BBeGCLhAHX0K?p=preview
是否有可能有一個控制器觀看服務的價值?
我已經創建了一個服務來隔離業務邏輯,並將它注入到需要這些信息的控制器中。我最終想要做的是讓控制器能夠觀察服務中的值,以便我不必通過廣播/通知或複雜的消息傳遞解決方案來通知所有控制器數據更改服務。從控制器看服務中的值
我創建了一個plnkr,展示了我想要做的事情的基本概念。
http://plnkr.co/edit/oL6AhHq2BBeGCLhAHX0K?p=preview
是否有可能有一個控制器觀看服務的價值?
你已經在做對了。即將服務推入範圍變量,然後將該服務作爲範圍變量的一部分進行觀察。
這裏是你工作的解決方案:
http://plnkr.co/edit/SgA0ztPVPxTkA0wfS1HU?p=preview
HTML
<!doctype html>
<html ng-app="plunker" >
<head>
<meta charset="utf-8">
<title>AngularJS Plunker</title>
<script>document.write('<base href="' + document.location + '" />');</script>
<link rel="stylesheet" href="style.css">
<script src="http://code.angularjs.org/1.1.3/angular.js"></script>
<script src="app.js"></script>
</head>
<body ng-controller="MainCtrl">
<button ng-click="start()">Start Count</button>
<button ng-click="stop()">Stop Count</button>
ControllerData: {{controllerData}}
</body>
</html>
的Javascript:
var app = angular.module('plunker', []);
app.service('myService', function($rootScope) {
var data = 0;
var id = 0;
var increment = function() {
data = data + 1;
$rootScope.$apply();
console.log("Incrementing data", data);
};
this.start = function() {
id = setInterval(increment, 500) ;
};
this.stop = function() {
clearInterval(id);
};
this.getData = function() { return data; };
}).controller('MainCtrl', function($scope, myService) {
$scope.service = myService;
$scope.controllerData = 0;
$scope.start = function() {
myService.start();
};
$scope.stop = function() {
myService.stop();
};
$scope.$watch('service.getData()', function(newVal) {
console.log("New Data", newVal);
$scope.controllerData = newVal;
});
});
下面是一些你錯過的東西:
punker代碼已經不存在了(或者我看不到它),請把答案的內容放在這裏,而不是放在第三方網站上,讓你的+ 1. – 2014-06-12 10:10:25
@ BernhardHofmann ++。我還沒有點擊過一個有效的plnkr的年齡段。 – 2014-07-07 22:23:05
@BernhardHofmann我已經從plunker裏面插入了代碼。 – ganaraj 2014-07-08 08:49:55
我的失望是因爲蹲跳者不在了,代碼也是如此,它使得這個問題(和答案)無用。 :(把代碼放在這裏,我會+1你的問題 – 2014-06-12 10:09:36