【问题标题】:Inputting an UUID/GUID into a form's text input using Angular JS使用 Angular JS 将 UUID/GUID 输入到表单的文本输入中
【发布时间】:2014-08-03 22:13:14
【问题描述】:

我正在为最终用户创建一个带有多个输入选项的表单,但我希望使用一个输入作为 UUID/GUID。

这是我目前所拥有的模块 (project.js):

angular.module('project', ['ngRoute', 'firebase'])

.value('fbURL', 'https://private.firebaseio.com/')

.factory('Projects', function($firebase, fbURL) {
  return $firebase(new Firebase(fbURL));
})

.config(function($routeProvider) {
  $routeProvider
    .when('/', {
      controller:'ListCtrl',
      templateUrl:'list.html'
    })
    .when('/edit/:projectId', {
      controller:'EditCtrl',
      templateUrl:'detail.php'
    })
    .when('/new', {
      controller:'CreateCtrl',
      templateUrl:'detail.php'
    })
    .otherwise({
      redirectTo:'/'
    });
})

.controller('ListCtrl', function($scope, Projects) {
  $scope.projects = Projects;
  $scope.project = { trackid: 'UUID' };
})

.controller('CreateCtrl', function($scope, $location, $timeout, Projects) {
  $scope.project = { trackid: 'UUID' };  
  $scope.save = function() {
    Projects.$add($scope.project, function() {
      $timeout(function() { $location.path('/'); });
    });
  };
})

.controller('EditCtrl',
  function($scope, $location, $routeParams, $firebase, fbURL) {
    var projectUrl = fbURL + $routeParams.projectId;
    $scope.project = $firebase(new Firebase(projectUrl));

  $scope.destroy = function() {
      $scope.project.$remove();
      $location.path('/');
    };

  $scope.save = function() {
      $scope.project.$save();
      $location.path('/');
    };

  $scope.project = { trackid: 'UUID' };
});

这是我的表单输入(在我的 detail.php 文件中):

<form name="myForm">
  <label>Track ID</label>
  <input type="text" name="trackid" ng-model="project.trackid" disabled>

如您所知,在此示例中,我只是在我实际想要插入 UUID 的位置插入文本“UUID”。但是,我似乎无法弄清楚如何在其中插入将生成此 UUID 的函数。任何帮助将不胜感激!谢谢!

【问题讨论】:

  • 你在问什么,如何创建一个 UUID 或者只是如何将一个函数作为返回 UUID 的值?
  • @charlietfl 我想知道在这种情况下如何将函数作为值。例如,我会使用这样的东西:How to create a GUID / UUID in Javascript?。谢谢!

标签: javascript angularjs guid uuid


【解决方案1】:

如果您有一个返回所需值的函数,您可以这样做:

function getUUID(){
  var result = /* parse value */
  return result;
}

$scope.project ={ trackid: getUUID() };

DEMO

【讨论】:

  • 我在你下面的演示链接上试过了,但我似乎仍然没有做对。所以,还有几个后续问题。 1) 我应该为该 getUUID() 函数创建一个单独的 .js 文件,还是应该将其包含在我的 project.js 文件中(在上面的示例中)? 2)我稍微编辑了您的代码,使“输入”成为获得该值的区域。但是,难道我在表单上的所有输入 div 都不会得到这个值吗?这是链接:revised demo 3) 输出可能只是 UUID 本身吗?谢谢!
  • 可以根据需要将该功能放入控制器中,不必绑定到 $scope ,或者如果您希望它远离控制器,可以将其放入服务中
  • 再次感谢您的回复。不过还是有一些问题。我已插入修改后的 project.js 代码 here,但仍然无法将其输出到表单中的“文本”字段(也包含在上面的链接中)。你能否让我知道我在哪里出错了。尽可能多的演练将不胜感激,以便我能很好地学习这一点。谢谢!
  • 您不制作函数的控制器,要么将函数放在将要使用它的控制器中,或者如果您需要在应用程序的多个部分中使用它,请将其放在服务
  • 明白了!所以,我想把它放在一个服务中,因为我将在我目前设置的所有三个控制器中使用它。你介意告诉我我会怎么做吗?在过去的两个小时里,我已经阅读了所有我可以在网上找到的关于将函数放入控制器和服务中的文档,但仍然没有得到它。我刚刚开始学习,所以感谢您的帮助!
猜你喜欢
  • 1970-01-01
  • 2023-04-01
  • 2014-01-03
  • 2014-10-02
  • 1970-01-01
  • 2016-05-15
  • 1970-01-01
  • 2018-11-08
  • 1970-01-01
相关资源
最近更新 更多