一尘不染

Angular.js:.value()是设置应用程序范围常量的正确方法以及如何在控制器中检索它的正确方法

angularjs

嗨,我在那里观看了几个angular.js视频,并看到value()方法用于设置一种模块范围的常量。例如,可以这样设置Angular-
UI库的配置:(咖啡脚本)

angular.module('app',[])
.value "ui.config", 
  tinymce:
    theme: 'simple'
    width: '500'
    height: '300'

我的应用目前看起来像这样:

window.app = angular.module("app", [ 'ui'])

.config(["$routeProvider", ($routeProvider) ->
  $routeProvider
  .when "/users",
    templateUrl: "assets/templates/users/index.html"
    controller: IndexUsersCtrl

  .otherwise redirectTo: "/users"

])

.value 'csrf', $('meta[name="csrf-token"]').attr('content') #<---- attention here

IndexUsersCtrl = ($scope) ->
  $scope.users = gon.rabl
  console.log "I want to log the csrf value here" #<---- then attention
IndexUsersCtrl.$inject = ['$scope']

但是我似乎无法通过点击与app模块相对应的’app’变量来获取该值。

我在ST和angularjs的google组上都读到过,一种共享通用代码btwn控制器的方式是通过服务,这种概念在这里也适用吗?

谢谢!


阅读 186

收藏
2020-07-04

共1个答案

一尘不染

Module.value(key, value)用于注入可编辑的值, Module.constant(key, value)用于注入常量

两者之间的区别不在于您“无法编辑常量”,而在于您无法使用$ provide截取常量并注入其他内容。

// define a value
app.value('myThing', 'weee');

// define a constant
app.constant('myConst', 'blah');

// use it in a service
app.factory('myService', ['myThing', 'myConst', function(myThing, myConst){
   return {
       whatsMyThing: function() { 
          return myThing; //weee
       },
       getMyConst: function () {
          return myConst; //blah
       }
   };
}]);

// use it in a controller
app.controller('someController', ['$scope', 'myThing', 'myConst', 
    function($scope, myThing, myConst) {
        $scope.foo = myThing; //weee
        $scope.bar = myConst; //blah
    });
2020-07-04