相关疑难解决方法(0)

在控制器之间使用共享服务进行脏检查,另一种方式是另一种方式不工作?

在尝试回答有关在两个独立控制器之间共享数据的问题时,我遇到了一个问题.

我通常使用服务来完成这项任务并开始创建一个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)

javascript angularjs angularjs-service

4
推荐指数
1
解决办法
1184
查看次数

标签 统计

angularjs ×1

angularjs-service ×1

javascript ×1