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

将变量从服务/工厂绑定到控制器

穆鸿波
2023-03-14
问题内容

我有一个变量,将由一个或多个控制器使用,由服务更改。在那种情况下,我建立了一个服务来将该变量保存在内存中,并在控制器之间共享。

问题是:每次变量更改时,控制器中的变量都不会实时更新。

我创建这个小提琴来提供帮助。http://jsfiddle.net/ncyVK/

-–请注意,当我增加count的值时,{{countService}}{{countFactory}}永远不会更新。

如何将Service / Factory变量绑定到Controller中的$ scope.variable?我做错了什么?


问题答案:

您不能绑定变量。但是您可以绑定包含此变量的变量访问器或对象。这是固定的jsfiddle。

基本上,您必须将可以返回/或保留当前值的内容传递给范围。例如

厂:

app.factory('testFactory', function(){
    var countF = 1;
    return {
        getCount : function () {

            return countF; //we need some way to access actual variable value
        },
        incrementCount:function(){
           countF++;
            return countF;
        }
    }               
});

控制器:

function FactoryCtrl($scope, testService, testFactory)
{
    $scope.countFactory = testFactory.getCount; //passing getter to the view
    $scope.clickF = function () {
        $scope.countF = testFactory.incrementCount();
    };
}

视图:

<div ng-controller="FactoryCtrl">

    <!--  this is now updated, note how count factory is called -->
    <p> This is my countFactory variable : {{countFactory()}}</p>

    <p> This is my updated after click variable : {{countF}}</p>

    <button ng-click="clickF()" >Factory ++ </button>
</div>


 类似资料:
  • 从正在运行的javafx应用程序打开新的javafx窗口时,我无法将fxml变量绑定到控制器类中的局部变量。 请注意,对于正在运行的应用程序,我可以毫无问题地绑定到同名变量,在运行时在正在运行的应用程序中填充ComboBox。欢迎任何解决方案。 调用新类的代码(ServerConfigChooser) 在运行的应用程序中工作的绑定示例(运行时执行的代码) 控制器类中的fxid“cb_01_fxid

  • 这可能是先导错误,但是FXML属性没有绑定到fx:id上的控制器类。我把它简化为一个微不足道的例子,但仍然“没有快乐”。我忽略了什么? 相关的Java代码是... 自我不是这里的问题,我很确定我忽略了一些简单的东西。

  • 问题内容: 我试图创建一个服务来获取json并将其传递给我homeCtrl我可以获取数据,但是当将其传递给我的homeCtrl时,它总是返回undefined。我卡住了。 我的服务: 我的家庭控制器: 问题答案: 您应该从函数返回promise ,当它被解析后,它应该从该函数返回。 厂 同样在控制器内部,您应该调用factory函数,并在service函数解析该调用并将其分配给 码

  • 问题内容: 我有一个ng- view以外的NavbarCtrl。我有一个与服务对话以使用户登录的登录控制器。用户登录后,我希望导航栏更新为用户的电子邮件地址。但是,对我而言,一旦用户登录,我似乎无法让Navbar范围更新加载到我的“ Auth”服务中的数据。 这是我的主要index.html: 而我的服务: 还有我的Login和Navbar控制器: 从我的研究中,我会认为$ scope.user

  • 问题内容: 我的控制器中有一些函数可以调用一些数据库函数。所有这些数据库函数都执行“错误回调”,这意味着如果发生数据库错误,它们将执行一个单独的回调来处理该错误。例: 我有与此相似的多个函数,它们正在调用不同的数据库函数。问题是我目前已将onError()复制到每个函数的作用域中,因为在处理错误时我需要req和res变量。我当然可以将res和req传递给数据库函数,然后将它们作为参数传递给错误回调

  • 问题内容: 我是一个有角的新手,正在构建一个应用程序,让我感到困惑的是,有几种方法定义了服务,我从此链接中了解了更多:如何定义服务, 然后似乎没有太大的区别定义服务的方式。 但我只是注意到我认为是不同的一个不同之处: 看到我从这里得到的这项服务http://jsfiddle.net/2by3X/5/ 如果我使用如下所示的“工厂”定义此服务,则一个功能不能调用该服务的其他功能。 我将在浏览器控制台中