1. ホーム
  2. javascript

[解決済み] Angular.js: .value()はアプリ全体の定数を設定する適切な方法か、そしてコントローラでそれを取得する方法

2023-04-25 13:31:43

質問

こんにちは、私はangular.jsのビデオをいくつか見ていて、value()メソッドがモジュール全体の定数のようなものを設定するために使用されているのを見ました。(coffeescript)

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グループで、コントローラ間で共通のコードを共有する方法の1つとして、サービスを利用するというのを読んだのですが、このコンセプトはここでも適用できるのでしょうか?

ありがとうございます。

どのように解決するのですか?

Module.value(key, value) は、編集可能な値を注入するために使用されます。 Module.constant(key, value) は定数値を注入するために使用されます。

この2つの違いは、定数を編集できないということではなく、$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
    });