在尝试回答有关在两个独立控制器之间共享数据的问题时,我遇到了一个问题.
我通常使用服务来完成这项任务并开始创建一个jsfiddle,但我无法让它工作.
经过一些调试后,如果我在setActivePersonWorks(person)脏检查中动态创建属性,第二个控制器显示正确的值.
如果我分配了setActivePersonDoesNotWork()它的值没有.
如果我使用$timeout()我能够验证DataService.badPerson确实包含正确的数据.
难道我做错了什么?我想如果你做了什么,$apply()它会正常工作,但为什么动态创建值会导致事情正常工作?
工作实例:
var myTest = angular.module("MyTest", []);
myTest.factory("DataService", function () {
var People = {
goodPerson: {},
badPerson: {},
setActivePersonWorks: function (person) {
People.goodPerson.name = person.name;
People.goodPerson.id = person.id;
},
setActivePersonDoesNotWork: function (person) {
People.badPerson = person;
}
};
return People;
});
function ViewController($scope, DataService, $timeout) {
$timeout(function () {
DataService.setActivePersonWorks({
id: 1,
name: "Good Mark"
});
DataService.setActivePersonDoesNotWork({
id: 2,
name: "Bad Mark"
});
}, …Run Code Online (Sandbox Code Playgroud)