คำถามติดแท็ก angularjs-service


4
ฉันจะทดสอบบริการ AngularJS จากคอนโซลได้อย่างไร
ฉันมีบริการเช่น: angular.module('app').factory('ExampleService', function(){ this.f1 = function(world){ return 'Hello '+world; } return this; }) ฉันต้องการทดสอบจากคอนโซล JavaScriptและเรียกใช้ฟังก์ชันf1()ของบริการ ฉันจะทำสิ่งนั้นได้อย่างไร

9
AngularJS: เมื่อใดควรใช้บริการแทนโรงงาน
กรุณาอดทนกับฉันที่นี่ ฉันรู้ว่ามีคำตอบอื่น ๆ เช่น: AngularJS: บริการกับผู้ให้บริการกับโรงงาน อย่างไรก็ตามฉันยังไม่สามารถคิดออกเมื่อคุณต้องการใช้บริการมากกว่าโรงงาน จากสิ่งที่ฉันสามารถบอกได้ว่าโรงงานใช้กันทั่วไปเพื่อสร้างฟังก์ชั่น "ทั่วไป" ที่สามารถเรียกใช้โดยตัวควบคุมหลายตัว: การสร้างฟังก์ชั่นตัวควบคุมทั่วไป เอกสารเชิงมุมดูเหมือนจะชอบโรงงานมากกว่าบริการ พวกเขายังอ้างถึง "บริการ" เมื่อพวกเขาใช้โรงงานซึ่งยิ่งทำให้สับสน! http://docs.angularjs.org/guide/dev_guide.services.creating_services ดังนั้นเมื่อหนึ่งจะใช้บริการ มีบางสิ่งที่เป็นไปได้หรือทำได้ง่ายกว่ามากกับบริการ มีอะไรแตกต่างที่เกิดขึ้นเบื้องหลังหรือไม่ ความแตกต่างด้านประสิทธิภาพ / หน่วยความจำ? นี่คือตัวอย่าง นอกเหนือจากวิธีการประกาศพวกเขาดูเหมือนกันและฉันไม่สามารถหาสาเหตุที่ฉันทำอย่างใดอย่างหนึ่งกับคนอื่น http://jsfiddle.net/uEpkE/ อัปเดต:จากคำตอบของโทมัสดูเหมือนจะบอกเป็นนัยว่าการบริการนั้นมีไว้สำหรับตรรกะที่ง่ายขึ้นและโรงงานสำหรับตรรกะที่ซับซ้อนมากขึ้นด้วยวิธีการส่วนตัวดังนั้นฉันจึงอัปเดตรหัสซอด้านล่างและดูเหมือนว่าทั้งสองสามารถรองรับฟังก์ชั่นส่วนตัวได้หรือไม่ myApp.factory('fooFactory', function() { var fooVar; var addHi = function(foo){ fooVar = 'Hi '+foo; } return { setFoobar: function(foo){ addHi(foo); }, getFoobar:function(){ return fooVar; } …

10
ฉันจะกำหนดค่าสภาพแวดล้อมที่แตกต่างใน Angular.js ได้อย่างไร
คุณจะจัดการตัวแปร / ค่าคงที่สำหรับสภาพแวดล้อมที่แตกต่างกันได้อย่างไร นี่อาจเป็นตัวอย่าง: API ส่วนที่เหลือของฉันคือสามารถเข้าถึงได้ในlocalhost:7080/myapi/แต่เพื่อนของฉันที่ทำงานในรหัสเดียวกันภายใต้การควบคุมเวอร์ชัน Git มี API จะนำไปใช้ใน Tomcat localhost:8099/hisapi/ของเขาใน สมมติว่าเรามีสิ่งนี้: angular .module('app', ['ngResource']) .constant('API_END_POINT','<local_end_point>') .factory('User', function($resource, API_END_POINT) { return $resource(API_END_POINT + 'user'); }); ฉันจะฉีดค่าปลายทางที่ถูกต้องของ API แบบไดนามิกได้อย่างไรขึ้นอยู่กับสภาพแวดล้อม ใน PHP ฉันมักจะทำสิ่งนี้กับconfig.username.xmlไฟล์การรวมไฟล์การกำหนดค่าพื้นฐาน (config.xml) กับไฟล์การกำหนดค่าสภาพแวดล้อมท้องถิ่นที่รู้จักโดยชื่อของผู้ใช้ แต่ฉันไม่รู้วิธีจัดการสิ่งนี้ใน JavaScript?

10
AngularJS: วิธีที่ถูกต้องในการเชื่อมโยงกับคุณสมบัติของบริการ
ฉันกำลังมองหาวิธีปฏิบัติที่ดีที่สุดในการเชื่อมโยงกับคุณสมบัติบริการใน AngularJS ฉันได้ทำงานผ่านหลายตัวอย่างเพื่อเข้าใจวิธีเชื่อมโยงกับคุณสมบัติในบริการที่สร้างขึ้นโดยใช้ AngularJS ด้านล่างฉันมีสองตัวอย่างของวิธีการเชื่อมโยงกับคุณสมบัติในบริการ พวกเขาทั้งสองทำงาน ตัวอย่างแรกใช้การเชื่อมโยงพื้นฐานและตัวอย่างที่สองใช้ $ scope $ watch เพื่อเชื่อมโยงกับคุณสมบัติของบริการ ตัวอย่างเหล่านี้เป็นที่ต้องการเมื่อเชื่อมโยงกับคุณสมบัติในบริการหรือมีตัวเลือกอื่นที่ฉันไม่ทราบว่าจะแนะนำหรือไม่ หลักฐานของตัวอย่างเหล่านี้คือบริการควรอัปเดตคุณสมบัติ "lastUpdated" และ "การโทร" ทุก 5 วินาที เมื่ออัปเดตคุณสมบัติของบริการแล้วมุมมองควรสะท้อนถึงการเปลี่ยนแปลงเหล่านี้ ตัวอย่างทั้งสองนี้ทำงานได้สำเร็จ ฉันสงสัยว่ามีวิธีที่ดีกว่าในการทำมัน การผูกแบบพื้นฐาน รหัสต่อไปนี้สามารถดูและวิ่งได้ที่นี่: http://plnkr.co/edit/d3c16z <html> <body ng-app="ServiceNotification" > <div ng-controller="TimerCtrl1" style="border-style:dotted"> TimerCtrl1 <br/> Last Updated: {{timerData.lastUpdated}}<br/> Last Updated: {{timerData.calls}}<br/> </div> <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.0.5/angular.js"></script> <script type="text/javascript"> var app = angular.module("ServiceNotification", …

7
การใส่ล้อเลียนลงในบริการ AngularJS
ฉันมีบริการ AngularJS ที่เขียนไว้และฉันต้องการทดสอบหน่วย angular.module('myServiceProvider', ['fooServiceProvider', 'barServiceProvider']). factory('myService', function ($http, fooService, barService) { this.something = function() { // Do something with the injected services }; return this; }); ไฟล์ app.js ของฉันได้ลงทะเบียนสิ่งเหล่านี้: angular .module('myApp', ['fooServiceProvider','barServiceProvider','myServiceProvider'] ) ฉันสามารถทดสอบว่า DI ทำงานได้ดังนี้: describe("Using the DI framework", function() { beforeEach(module('fooServiceProvider')); beforeEach(module('barServiceProvider')); beforeEach(module('myServiceProvder')); var service; beforeEach(inject(function(fooService, barService, …

24
Angularjs: ข้อผิดพลาด: [ng: areq] อาร์กิวเมนต์ 'HomeController' ไม่ใช่ฟังก์ชันไม่ได้กำหนด
นี่คือการสาธิตของฉันโดยใช้ angularjs สำหรับสร้างไฟล์บริการและเพิ่มบริการให้กับคอนโทรลเลอร์ ฉันมีปัญหาสองประการกับการสาธิตของฉัน: หนึ่งคือเมื่อฉันใส่<script src="HomeController.js">ก่อนที่จะ<script src="MyService.js">ได้รับข้อผิดพลาดนี้ ข้อผิดพลาด: [ng: areq] อาร์กิวเมนต์ 'HomeController' ไม่ใช่ฟังก์ชันไม่ได้กำหนด อีกอย่างคือเมื่อฉันใส่<script src="MyService.js">ก่อนที่จะ<script src="HomeController.js">ได้รับข้อผิดพลาดต่อไปนี้ ข้อผิดพลาด: [$ injector: unpr] ผู้ให้บริการที่ไม่รู้จัก: MyServiceProvider <- MyService แหล่งที่มาของฉัน: ไฟล์Index.html: <!DOCTYPE html> <html > <head lang="en">…</head> <body ng-app="myApp"> … <div ng-controller="HomeController"> <div ng-repeat="item in hello">{{item.id + item.name}}</div> </div> <script src="Scripts/angular.js"></script> <script src="Scripts/angular-route.js"></script> <!-- App …

4
จะรอจนกว่าคำตอบจะมาจากคำขอ $ http ใน angularjs ได้อย่างไร
ฉันกำลังใช้ข้อมูลบางส่วนที่มาจากบริการ RESTful ในหลาย ๆ เพจ ดังนั้นฉันจึงใช้โรงงานเชิงมุมสำหรับสิ่งนั้น ดังนั้นฉันต้องได้รับข้อมูลหนึ่งครั้งจากเซิร์ฟเวอร์และทุกครั้งที่ฉันได้รับข้อมูลด้วยบริการที่กำหนดนั้น เช่นเดียวกับตัวแปรส่วนกลาง นี่คือตัวอย่าง: var myApp = angular.module('myservices', []); myApp.factory('myService', function($http) { $http({method:"GET", url:"/my/url"}).success(function(result){ return result; }); }); ในคอนโทรลเลอร์ของฉันฉันใช้บริการนี้ในฐานะ: function myFunction($scope, myService) { $scope.data = myService; console.log("data.name"+$scope.data.name); } มันทำงานได้ดีสำหรับฉันตามความต้องการของฉัน แต่ปัญหาคือเมื่อฉันโหลดซ้ำในหน้าเว็บบริการจะถูกเรียกอีกครั้งและขอเซิร์ฟเวอร์ หากอยู่ระหว่างฟังก์ชันอื่น ๆ ที่ดำเนินการซึ่งขึ้นอยู่กับ "บริการที่กำหนดไว้" จะทำให้ข้อผิดพลาดเช่น "บางสิ่ง" ไม่ได้กำหนด ดังนั้นฉันต้องการรอในสคริปต์ของฉันจนกว่าบริการจะโหลด ฉันจะทำเช่นนั้นได้อย่างไร? มีการทำ angularjs หรือไม่?

5
จะเข้าถึงบริการจาก RESTful API ในหน้า angularjs ของฉันได้อย่างไร
ฉันยังใหม่กับ angularJS มาก ฉันกำลังค้นหาการเข้าถึงบริการจาก RESTful API แต่ฉันไม่ได้รับความคิดใด ๆ ฉันจะทำเช่นนั้นได้อย่างไร?

6
ฉันจะป้องกันไม่ให้ angular-ui modal ปิดได้อย่างไร
ฉันใช้ Angular UI $ modal ในโครงการของฉัน http://angular-ui.github.io/bootstrap/#/modal ฉันไม่ต้องการให้ผู้ใช้ปิดโมดอลโดยกดที่ฉากหลัง ฉันต้องการให้โมดอลสามารถปิดได้โดยการกดปุ่มปิดที่ฉันสร้างขึ้นเท่านั้น ฉันจะป้องกันไม่ให้โมดอลปิดได้อย่างไร
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.