Halo, saya menonton beberapa video angular.js dan melihat bahwa metode value () digunakan untuk mengatur semacam konstanta lebar modul. misalnya, seseorang dapat menyetel konfigurasi pustaka Angular-UI seperti ini: (coffeescript)
angular.module('app',[])
.value "ui.config",
tinymce:
theme: 'simple'
width: '500'
height: '300'
Dan aplikasi saya saat ini terlihat seperti ini:
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']
Tapi sepertinya saya tidak bisa mendapatkan nilai itu dengan mengetuk variabel 'app' yang sesuai dengan modul aplikasi.
Saya membaca di sini di ST dan seterusnya di grup google angularjs bahwa salah satu cara untuk berbagi kode umum pengontrol btwn adalah melalui layanan, apakah konsep ini akan berlaku di sini juga?
Terima kasih!
javascript
angularjs
Nik So
sumber
sumber
Jawaban:
Module.value(key, value)
digunakan untuk memasukkan nilai yang dapat diedit,Module.constant(key, value)
digunakan untuk memasukkan nilai konstanPerbedaan antara keduanya tidak terlalu banyak sehingga Anda "tidak dapat mengedit konstanta", tetapi lebih karena Anda tidak dapat mencegat konstanta dengan $ sediakan dan menyuntikkan sesuatu yang lain.
// 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 });
sumber
Saya baru-baru ini ingin menggunakan fitur ini dengan Karma di dalam tes. Seperti yang ditunjukkan Dan Doyon, kuncinya adalah Anda akan memasukkan nilai seperti pengontrol, layanan, dll. Anda dapat menyetel .value ke berbagai jenis - string, array objek, dll. Misalnya:
myvalues.js file yang berisi nilai - pastikan itu termasuk dalam file conf karma Anda
var myConstantsModule = angular.module('test.models', []); myConstantModule.value('dataitem', 'thedata'); // or something like this if needed myConstantModule.value('theitems', [ {name: 'Item 1'}, {name: 'Item 2'}, {name: 'Item 3'} ]);
]);
test / spec / mytest.js - mungkin ini adalah file spesifikasi Jasmine yang dimuat oleh Karma
describe('my model', function() { var theValue; var theArray; beforeEach(module('test.models')); beforeEach(inject(function(dataitem,theitems) { // note that dataitem is just available // after calling module('test.models') theValue = dataitem; theArray = theitems; }); it('should do something',function() { // now you can use the value in your tests as needed console.log("The value is " + theValue); console.log("The array is " + theArray); }); });
sumber
Anda perlu merujuk
csrf
pada pengontrol AndaIndexUsersCtrl = ( $scope, csrf )
IndexUsersCtrl.$inject = [ '$scope', 'csrf' ]
sumber