我在JS中有一些技巧,而且我幾乎是新手Angular。我有一個關於$ watch如何工作的問題。任務 - 以正確的方式在指令和控制器之間共享數據。據我所知,最佳做法是使用服務共享數據。所以,我有:
指令
angular.module('app.directives').directive('ffDomains', function(sharedData) {
...
$scope.navigateTo = function(domain, event) {
$scope.activeDomain = domain;
sharedData.setDomain(domain);
};
...
}
工廠
angular.module("app.factories").factory('sharedData', function() {
var domain = null;
return {
setDomain: setDomain,
getDomain: getDomain
};
function setDomain(_domain) {
domain = _domain;
}
function getDomain() {
return domain;
}
});
和控制器
angular.module('app.controllers').controller('mainController', ['$scope', 'sharedData', function ($scope, sharedData) {
$scope.currentDomain = {};
$scope.$watch(function() {return sharedData.getDomain()}, function() {
if (sharedData.getDomain()) {
$scope.currentDomain = sharedData.getDomain();
} else {
$scope.currentDomain.domain = 'All domains';
}
});
}]);
的問題是爲什麼要使用函數(){返回sharedData.getDomain( )}而不是sharedData.getDomain ()在看?最後一個是域名變量在我的服務中的鏈接。爲什麼它是不夠的呢?
非常感謝您的幫助。我感謝你的時間。
你可以試試看下面的$ scope。$ watch(sharedData.getDomain,...'。 –