【问题标题】:Passing/Updating Data in a Factory from One Controller to Another将工厂中的数据从一个控制器传递/更新到另一个控制器
【发布时间】:2015-09-07 15:25:39
【问题描述】:

我不确定我是否遇到了“最佳实践”问题,我正试图以一种奇怪而美妙的方式解决这个挑战,或者我对 AngularJS 的掌握是否还没有。

场景:所以我一直在尝试想办法在页面上输出“originCity.cityName”几次,所有这些都引用同一个工厂内的同一个对象希望如果我将其设置为其他值(例如“测试字符串”),那么它将追溯替换页面周围的所有 {{originCity.cityName}}

module.service('cityFactory', function () {

    return {
        originCity: {
            cityName: 'TestLocation'
        };

        //Update the city
        this.update = function (newCityName) {
            this.originCity.cityName = newCityName;
        }
    });

在两个单独的控制器中,我对工厂进行了以下调用:

$scope.originCity = cityService.originCity

并且,为了演示,在一个单独的控制器中,我对工厂的更新方法进行了以下调用:

$scope.setCity = function() {
    cityService.update('Test String');
}

正如我上面提到的,这对我来说是非常新的,所以我可能会做错了,但我希望有一个工厂,它有一个可以从页面上的任何地方调用的方法(只要依赖项都符合)以在几个地方更新该值。

如果我在工厂内部的更新方法中console.logthis.originCity.cityName,那么它会正确输出为Test String,但对数据的其他引用当前没有更新。

【问题讨论】:

  • 更新方法怎么调用?如果你把它放在$watch 中,它应该会正确更新
  • 哦等等,你更新了工厂.. 看错了。在这种情况下,您如何更改该值?通过输入框?
  • @Guinn 出于演示目的,我尽量让它尽可能简单,所以我只是在页面上放了一个随机按钮,如果我按下它,我就会调用更新方法。

标签: angularjs factory angularjs-service


【解决方案1】:
module.factory('cityFactory', function () {
    var _cityName = null;
    var cityFactoryInstance = {};

    //Update the city from outside the DOM:
    var _update = function (newCityName) {
        _cityName = newCityName;
    }

    cityFactoryInstance.update = _update;
    cityFactoryInstance.cityName = _cityName;
    return cityFactoryInstance;
});

module.controller('controller1',
    ['$scope','cityFactory', function ($scope, cityFactory) {

        $scope.originCity.cityName = cityFactory.cityName;
    }]);

module.controller('controller2',
    ['$scope', 'cityFactory', function ($scope, cityFactory) {

        $scope.originCity.cityName = cityFactory.cityName;
    }]);

在 DOM 中:

{{originCity.cityName}}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-04
    • 2018-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多