我是AngularJS的新手,并且出现了一个奇怪的情况,我无法在两个控制器PersonDetailCtrl和PersonListCtrl和服务ContactService之间共享数据。下面是用于PersonDetailCtrl无法在AngularJS中获取服务中的共享数据
对于每个分量的码上述代码
app.controller('PersonDetailController', function ($scope, ContactService, $rootScope){ $scope.selectedPerson = ContactService.selectedPerson; }
代码PersonListCtrl
app.controller('PersonListController', function ($scope, ContactService, $rootScope) {
$scope.search = "";
$scope.order = "email";
$scope.persons = ContactService.persons;
$scope.selectedPerson = ContactService.selectedPerson;
$scope.selectPerson = function (person, index) {
$scope.selectedPerson = person;
ContactService.selectedPerson = person;
};
$scope.sensitiveSearch = function(person) {
if ($scope.search) {
return person.name.indexOf($scope.search) == 0 ||
person.email.indexOf($scope.search) == 0;
}
return true;
};
});
的ContactService
app.service('ContactService', function() {
return{
'selectedPerson': null ,
'persons': [
{
"name": "Gregory Huffman",
"email": "[email protected]et",
"birthdate": "2015-03-23T18:00:37-07:00",
"phonenumber": "07624 073918",
"address": "5880 Sed, Street",
"city": "Denderbelle",
"country": "Ethiopia"
},
{
"name": "Tad Vazquez",
"email": "[email protected]",
"birthdate": "2015-12-28T06:02:56-08:00",
"phonenumber": "(016977) 1036",
"address": "830-6354 Cubilia Rd.",
"city": "Sulzbach",
"country": "Liechtenstein"
}]
};
});
任何人都可以解释我,为什么我没有得到在PersonDetailCtrl
selectedPerson
。我知道,我们可以通过点符号来获得它,但我想知道,为什么这不起作用?
是否因为Prototypical Inheritance,每个控制器都自己创建新的persons
和selectedPerson
属性。如果是这种情况,那么为什么我会从ContactService.person
任务中获得所有人员?
代码示例:https://jsfiddle.net/y9bLxdua/
请把完整的服务。想看看它。 – Gary
重构服务 –