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

在angualr.js中获取和设置值

符懿轩
2023-03-14
问题内容

这是我的工厂:

.factory('userService',()){
  var user = {};
  return {

  getFirstname : function () {
    return user.firstname;
  },

  setFirstname : function (firstname) {
    user.firstname = firstname;
  }

}

我在两个控制器MainCtrl和AccountEditCtrl中使用此服务,在MainCtrl中使用getFirstname(),在AccountEditCtrl中使用setFirstname

.controller('MainCtrl',['userService', function(userService){
  $scope.userName = userService.getFirstName();
}]);

.controller('AccountEditCtrl',['userService', function(userService){
      userService.setFirstname("New First Name");
}]);

我的问题是,当我使用userService.setFirstname()时,$ scope.userName不会在MainCtrl中更改。


问题答案:

在某些情况下,$ watch无法使用工厂对象。比起您可以使用事件进行更新。

 app.factory('userService',['$rootScope',function($rootScope){
  var user = {};
  return {

  getFirstname : function () {
    return user.firstname;
  },

  setFirstname : function (firstname) {
    user.firstname = firstname;
    $rootScope.$broadcast("updates");
  }

}
}]);
app.controller('MainCtrl',['userService','$scope','$rootScope', function(userService,$scope,$rootScope) {
  userService.setFirstname("bharat");
  $scope.name = userService.getFirstname();
  $rootScope.$on("updates",function(){
    $scope.name = userService.getFirstname();
  });
}]);

app.controller('one',['userService','$scope', function(userService,$scope) {
  $scope.updateName=function(){
    userService.setFirstname($scope.firstname);
  }
}]);

这是一个有效的例子



 类似资料:
  • 我正在尝试为属性创建get和set方法: 设置值的关键字是什么?

  • 问题内容: 我需要知道如何让NetBeans使用快捷方式生成getter和setter。 问题答案: 将光标放在班级内部,然后按+ 并从上下文菜单中选择。

  • 在VBA中,我希望从响应中截取字符串,并在随后的请求中设置它。 (如果Excel崩溃,这个cookie似乎丢失了,用户必须再次进行身份验证。我希望为用户设置最后存储的会话ID,这样如果会话在服务器上仍然有效,他们就不必在Excel客户机中重新进行身份验证。) 我看到了一些在线资源,根据这些资源,下面将拉出JSESSIONID cookie,但最后一行总是打印为空: 当我打印时,我看不到任何包含JS

  • 问题内容: 我一直在尝试以及如何使用它的光标位置。 但是由于我正在使用Swift,所以我想学习如何获取当前光标位置以及如何在Swift中进行设置。 下面的答案是我从Objective-C进行实验和翻译的结果。 问题答案: 以下内容适用于和。 文本字段文本的最开始: 文本字段文本的末尾: 当前选择的范围: 获取光标位置 设定光标位置 为了设置位置,所有这些方法实际上都是使用相同的开始值和结束值来设置

  • 问题内容: 我正在尝试在我正在开发的Eclipse RCP应用程序中添加RadioGroupFieldEditor,但似乎无法做两件事: 设置单选按钮的值(例如,打开对话框/窗口时,我想例如将默认值设置为“ button1”) 获取所选单选按钮的当前值(即用户选择的值,或者如果未设置任何内容,则设置为上面的默认值)。 我使用的代码如下: 我有一个fireValueChanged()方法,我可以使用

  • 问题内容: Java程序员和API似乎更喜欢显式的set / get方法。 但是,我给C ++社区不满意这种做法的印象。如果是这样,是否有特定原因(除了更多的代码行)为何如此? 另一方面,为什么Java社区选择使用方法而不是直接访问? 谢谢 问题答案: 一个设计良好的类在理想情况下应该没有太多的获取和设置。我认为,太多的获取和设置基本上是一个事实,表明其他人(可能还有许多人)需要我的数据才能实现其