当前位置: 首页 > 面试题库 >

将工厂中的数据从一个控制器传递/更新到另一个控制器

常茂
2023-03-14
问题内容

我不确定是否遇到“最佳实践”问题,试图以一种怪异而奇妙的方式解决该挑战,或者我是否还没有掌握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

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

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

正如我上面提到的,这对我来说是一个非常新的东西,因此我可能会犯错,但是我希望有一个工厂,可以在页面上的任何地方调用该方法(只要依赖项全部在行)以在几个地方更新该值。

如果我console.logthis.originCity.cityName在工厂内的更新方法,然后将它正确地输出为Test String,但对数据的其他引用目前没有更新。


问题答案:
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}}


 类似资料:
  • 我是JavaFx新手,因此我找不到解决问题的方法 假设我有以下应用程序结构: 在SecondController中显示文本的最佳/最佳方式是什么,从FirstController传递文本。我的意思是,我在中输入一个文本,然后按下按钮,按下按钮后,我希望文本显示在使用另一个控制器的中。我已经阅读了很多关于和可以用来解决这个问题的知识,但不幸的是,我无法实现一个有效的解决方案。 如果你们专家能在这方面

  • 问题内容: 我有以下两个对等控制器。这些没有父项: 在控制器1中,我想更新由Controller2控制的HTML中的变量xxx的值。有办法吗? 问题答案: 绝对使用服务在控制器之间共享数据,这是一个有效的示例。$ broadcast不是要走的路,您应该避免在有更合适的方式时使用事件系统。使用“服务”,“值”或“常量”(用于全局常量)。 http://plnkr.co/edit/ETWU7d0O8K

  • 需要你的帮助!这可能是更多的设计角度,但我在我的应用程序中使用这个模式,所以想得到一个想法。 我的问题是直接或间接地从一个控制器访问另一个控制器。是否有任何优雅的设计方法来做到这一点,而不是在另一个控制器中保留一个控制器的引用。 提前致谢

  • 问题内容: 我正在使用Swift,在tableview的didSelectRowAtIndexPath方法中出现错误。我想将值传递给另一个视图控制器,即“ secondViewController”。这里,EmployeesId是一个数组。相关代码如下: 但是我收到此错误:致命错误:展开一个Optional值时意外发现nil。 任何帮助将不胜感激。 问题答案: 这是一个有两个假设的一般解决方案。首

  • 我有一个进度条,我试图在控制器的javaFX中更新它。我正在根据一个名为Generate()的函数更新进度条,如果它被调用,它应该更新主控制器内的进度条。但是,我拥有的代码不会更新它,而是更新了进度条的新实例。 我的DrawerContentController中的Generate方法是: 在我的主控制器中,我使用场景构建器通过fxml设置了进度条,我正在尝试从DrawerContentContr

  • 我有两个控制器和。我正在读一本书的内容。来自的txt文件,我希望将该文本放置在的文本区域中。代码在中运行并读取良好,但当打开中的窗口时,从中读取的内容。文本内容在文本区域中不可见。我的显示String mine包含内容,但它不显示在的文本区域中。请帮助任何人。非常感谢。 FXMLDocumentController代码 在中,有一个我删除了和,这样代码就可以工作了。