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

ใช้สำหรับคำถามเกี่ยวกับ AngularJS (1.x), เฟรมเวิร์ก JavaScript แบบโอเพ่นซอร์ส อย่าใช้แท็กนี้สำหรับ Angular 2 หรือใหม่กว่า; ใช้แท็ก [angular] แทน

5
ความแตกต่างระหว่าง MEAN.js และ MEAN.io
ฉันต้องการใช้ MEAN JavaScript Stack แต่ฉันสังเกตเห็นว่ามีสองกองที่แตกต่างกันกับเว็บไซต์ของตัวเองและวิธีการติดตั้ง: mean.js และ mean.io ดังนั้นฉันจึงถามตัวเองด้วยคำถามนี้: "ฉันใช้อันไหนดี?" ดังนั้นเพื่อตอบคำถามนี้ฉันถามชุมชนว่าคุณสามารถอธิบายความแตกต่างระหว่างสองสิ่งนี้ได้อย่างไร และถ้าเป็นไปได้ข้อดีข้อเสีย? เพราะพวกเขาดูเหมือนฉันมาก

18
วิธีโหลดสถานะปัจจุบันใหม่ได้อย่างไร
ฉันใช้ Angular UI Router และต้องการโหลดสถานะปัจจุบันอีกครั้งและรีเฟรชข้อมูลทั้งหมด / เรียกใช้งานคอนโทรลเลอร์อีกครั้งสำหรับสถานะปัจจุบันและเป็นพาเรนต์ ฉันมี 3 ระดับรัฐ: directory.organisations.details directory.organisationsมีตารางพร้อมรายการองค์กร คลิกที่รายการในตารางโหลดdirectory.organisations.detailsกับ $ StateParams ผ่าน ID ของรายการ ดังนั้นในสถานะรายละเอียดฉันโหลดรายละเอียดสำหรับรายการนี้แก้ไขจากนั้นบันทึกข้อมูล ทั้งหมดก็ดี ตอนนี้ฉันต้องโหลดสถานะนี้ใหม่และรีเฟรชข้อมูลทั้งหมด ฉันเหนื่อย: $state.transitionTo('directory.organisations'); ซึ่งไปสู่สถานะผู้ปกครอง แต่ไม่โหลดตัวควบคุมอีกครั้งฉันเดาว่าเนื่องจากเส้นทางไม่เปลี่ยนแปลง เป็นการดีที่ฉันแค่อยากอยู่ในdirectory.organisations.detailsและรีเฟรชข้อมูลทั้งหมดในพาเรนต์ด้วย ฉันได้ลองด้วย: $state.reload() ฉันเห็นสิ่งนี้ใน API WIKI สำหรับ $ state.reload "(ข้อผิดพลาดกับตัวควบคุมคืนค่าตอนนี้กำลังแก้ไขในไม่ช้า)" ความช่วยเหลือใด ๆ ที่จะได้รับการชื่นชม?

6
วิธีเข้าถึงขอบเขตพาเรนต์จากภายในคำสั่งที่กำหนดเอง * ด้วยขอบเขตของตัวเอง * ใน AngularJS
ฉันกำลังมองหาวิธีการเข้าถึงขอบเขต "หลัก" ใด ๆ ภายในคำสั่ง การรวมกันของขอบเขต, transclude, ต้อง, ผ่านในตัวแปร (หรือขอบเขตของตัวเอง) จากด้านบน ฯลฯ ฉันยินดีที่จะโค้งไปข้างหลังทั้งหมด แต่ฉันต้องการที่จะหลีกเลี่ยงบางสิ่งบางอย่างโดยสิ้นเชิงแฮ็คหรือ unmaintainable ตัวอย่างเช่นฉันรู้ว่าฉันสามารถทำได้ทันทีโดยรับ$scopeจากพารามิเตอร์ preLink และวนซ้ำตาม$siblingขอบเขตเพื่อค้นหาแนวคิด "หลัก" สิ่งที่ฉันต้องการคือการสามารถ$watchแสดงออกในขอบเขตผู้ปกครอง หากฉันสามารถทำสิ่งนั้นได้ฉันก็สามารถทำสิ่งที่ฉันพยายามทำที่นี่ได้: AngularJS - การสร้างตัวแปรบางส่วนด้วยวิธีการได้อย่างไร? หมายเหตุสำคัญคือคำสั่งนั้นจะต้องสามารถใช้งานได้อีกครั้งภายในขอบเขตหลักเดียวกัน ดังนั้นพฤติกรรมเริ่มต้น (ขอบเขต: false) จึงไม่ทำงานสำหรับฉัน ฉันต้องการแต่ละขอบเขตต่ออินสแตนซ์ของคำสั่งและจากนั้นฉันต้องการ$watchตัวแปรที่อยู่ในขอบเขตพาเรนต์ ตัวอย่างโค้ดมีค่า 1,000 คำดังนั้น: app.directive('watchingMyParentScope', function() { return { require: /* ? */, scope: /* ? */, transclude: /* ? */, …

15
AngularJS: ฉันจะส่งผ่านตัวแปรระหว่างตัวควบคุมได้อย่างไร
ฉันมีตัวควบคุมเชิงมุมสองตัว: function Ctrl1($scope) { $scope.prop1 = "First"; } function Ctrl2($scope) { $scope.prop2 = "Second"; $scope.both = Ctrl1.prop1 + $scope.prop2; //This is what I would like to do ideally } ฉันไม่สามารถใช้Ctrl1ภายในCtrl2เพราะมันไม่ได้กำหนด อย่างไรก็ตามถ้าฉันพยายามผ่านมันให้เป็นเช่นนั้น ... function Ctrl2($scope, Ctrl1) { $scope.prop2 = "Second"; $scope.both = Ctrl1.prop1 + $scope.prop2; //This is what I would like …

6
ผ่าน 2 $ index index ภายใน ng-repeat ที่ซ้อนกัน
ดังนั้นฉันจึงมี ng-repeat ซ้อนกันภายใน ng-repeat อื่นเพื่อสร้างเมนู nav ในแต่ละ<li>วงวนซ้ำภายในฉันตั้งค่า ng-click ซึ่งเรียกตัวควบคุมที่เกี่ยวข้องสำหรับรายการเมนูนั้นโดยการผ่านดัชนี $ เพื่อให้แอปทราบว่าเราต้องการอะไร อย่างไรก็ตามฉันจำเป็นต้องผ่านในดัชนี $ จากนอก ng-repeat เพื่อให้แอปรู้ว่าเราอยู่ในส่วนใดรวมถึงบทแนะนำที่สอนด้วย <ul ng-repeat="section in sections"> <li class="section_title {{section.active}}" > {{section.name}} </li> <ul> <li class="tutorial_title {{tutorial.active}}" ng-click="loadFromMenu($index)" ng-repeat="tutorial in section.tutorials"> {{tutorial.name}} </li> </ul> </ul> นี่คือ Plunker http://plnkr.co/edit/bJUhI9oGEQIql9tahIJN?p=preview

2
ไม่พบ angular.min.js.map มันคืออะไรกันแน่?
เมื่อฉันโหลดหน้าและตรวจสอบคอนโซล Chrome ฉันพบข้อผิดพลาดเหล่านี้: ไฟล์แผนที่คืออะไรในเชิงมุม? ฉันอ้างอิง angular.min.js แต่ไม่ใช่ angular.min.js.map ฉันกำลังใช้รีลีส 1.2 rc angular และฉันเพิ่งเริ่มเห็นข้อผิดพลาดเหล่านี้เมื่อฉันเปลี่ยนไปใช้รีลีสนี้ ERRORS: GET http://localhost:44786/Scripts/angular-route.min.js.map 404 (Not Found) :44786/Scripts/angular-route.min.js.map:1 GET http://localhost:44786/Scripts/angular-animate.min.js.map 404 (Not Found) :44786/Scripts/angular-animate.min.js.map:1 GET http://localhost:44786/Scripts/angular-resource.min.js.map 404 (Not Found) :44786/Scripts/angular-resource.min.js.map:1 GET http://localhost:44786/Scripts/angular.min.js.map 404 (Not Found) :44786/Scripts/angular.min.js.map:1
322 angularjs 

13
การหน่วงเวลาการเปลี่ยนเส้นทาง AngularJS จนกระทั่งรุ่นโหลดเพื่อป้องกันการสั่นไหว
ฉันสงสัยว่ามีวิธี (คล้ายกับ Gmail) สำหรับ AngularJS เพื่อหน่วงเวลาการแสดงเส้นทางใหม่จนกระทั่งหลังจากแต่ละรุ่นและข้อมูลถูกดึงมาโดยใช้บริการที่เกี่ยวข้อง ตัวอย่างเช่นหากมีProjectsControllerรายการที่ระบุโครงการทั้งหมดและproject_index.htmlซึ่งเป็นแม่แบบที่แสดงโครงการเหล่านี้Project.query()จะถูกดึงข้อมูลอย่างสมบูรณ์ก่อนที่จะแสดงหน้าใหม่ ก่อนหน้านั้นหน้าเก่าจะยังคงแสดงต่อไป (ตัวอย่างเช่นถ้าฉันเรียกดูหน้าอื่นแล้วตัดสินใจดูดัชนีโครงการนี้)

10
วิธีการดูอาร์เรย์ในเชิงลึก
มีอาร์เรย์ของวัตถุในขอบเขตของฉันฉันต้องการดูค่าทั้งหมดของแต่ละวัตถุ นี่คือรหัสของฉัน: function TodoCtrl($scope) { $scope.columns = [ { field:'title', displayName: 'TITLE'}, { field: 'content', displayName: 'CONTENT' } ]; $scope.$watch('columns', function(newVal) { alert('columns changed'); }); } แต่เมื่อฉันแก้ไขค่าเช่นฉันเปลี่ยนTITLEเป็นTITLE2ค่าที่alert('columns changed')ไม่เคยปรากฏ วิธีการเฝ้าดูวัตถุในอาเรย์อย่างล้ำลึก มีการสาธิตสด: http://jsfiddle.net/SYx9b/
320 angularjs  watch 

27
วิธีจัดการกับการเชื่อมโยงแฮช Anchor ใน AngularJS
คุณใด ๆ รู้วิธีจัดการการเชื่อมโยงแฮ็กสมอในAngularJS ? ฉันมีมาร์กอัปต่อไปนี้สำหรับหน้าคำถามที่พบบ่อยอย่างง่าย <a href="#faq-1">Question 1</a> <a href="#faq-2">Question 2</a> <a href="#faq-3">Question 3</a> <h3 id="faq-1">Question 1</h3> <h3 id="faq-2">Question 2</h3> <h3 id="fa1-3">Question 3</h3> เมื่อคลิกที่ลิงค์ด้านบนใด ๆ AngularJS จะสกัดกั้นและกำหนดเส้นทางให้ฉันไปยังหน้าอื่นอย่างสมบูรณ์ (ในกรณีของฉันหน้า 404 เนื่องจากไม่มีเส้นทางที่ตรงกับลิงก์) ความคิดแรกของฉันคือการสร้างการจับคู่เส้นทาง " / faq /: ตอน " และในการตรวจสอบตัวควบคุมที่เกี่ยวข้อง$routeParams.chapterหลังจากองค์ประกอบที่ตรงกันแล้วใช้ jQuery เพื่อเลื่อนลงไป แต่แล้ว AngularJS ก็มาหาฉันอีกแล้วเลื่อนไปที่ด้านบนของหน้า ดังนั้นทุกคนที่นี่ทำสิ่งที่คล้ายกันในอดีตและรู้วิธีแก้ปัญหาที่ดีหรือไม่ แก้ไข: การเปลี่ยนเป็น html5Mode ควรแก้ปัญหาของฉัน แต่เราต้องรองรับ IE8 …

8
$ ดูวัตถุ
ฉันต้องการดูการเปลี่ยนแปลงในพจนานุกรม แต่ด้วยเหตุผลบางประการการโทรกลับไม่ได้รับการโทร นี่คือคอนโทรลเลอร์ที่ฉันใช้: function MyController($scope) { $scope.form = { name: 'my name', surname: 'surname' } $scope.$watch('form', function(newVal, oldVal){ console.log('changed'); }); } นี่คือไวโอลิน ฉันคาดว่าจะได้รับเงิน $ watchbackback ในการเปลี่ยนชื่อหรือนามสกุลทุกครั้ง แต่จะไม่เกิดขึ้น วิธีที่ถูกต้องในการทำคืออะไร?

6
วิธีสร้างไฟล์คอนโทรลเลอร์ AngularJS แยกต่างหาก
ฉันมีคอนโทรลเลอร์ AngularJS ทั้งหมดของฉันในไฟล์เดียว controllers.js ไฟล์นี้มีโครงสร้างดังนี้: angular.module('myApp.controllers', []) .controller('Ctrl1', ['$scope', '$http', function($scope, $http) { }]) .controller('Ctrl2', ['$scope', '$http', function($scope, $http) } }]) สิ่งที่ฉันต้องการทำคือใส่ Ctrl1 และ Ctrl2 ลงในไฟล์แยกกัน จากนั้นฉันจะรวมไฟล์ทั้งสองไว้ใน index.html ของฉัน แต่ควรมีโครงสร้างอย่างไร ฉันพยายามทำสิ่งนี้และโยนข้อผิดพลาดในคอนโซลของเว็บเบราว์เซอร์โดยบอกว่าหาคอนโทรลเลอร์ของฉันไม่พบ คำใบ้ใด ๆ ฉันค้นหา StackOverflow และพบคำถามที่คล้ายกันนี้อย่างไรก็ตามไวยากรณ์นี้ใช้กรอบงานที่แตกต่าง (CoffeeScript) ที่ด้านบนของ Angular และดังนั้นฉันจึงไม่สามารถติดตามได้ AngularJS: ฉันจะสร้างตัวควบคุมในหลายไฟล์ได้อย่างไร

5
อะไรคือความแตกต่างระหว่างมูลค่าส่งคืนหรือสัญญาแก้ไขจากนั้น ()
อะไรคือความแตกต่างระหว่าง: new Promise(function(res, rej) { res("aaa"); }) .then(function(result) { return "bbb"; }) .then(function(result) { console.log(result); }); เรียกใช้ข้อมูลโค้ดซ่อนผลลัพธ์ขยายตัวอย่างข้อมูล และนี่: new Promise(function(res, rej) { res("aaa"); }) .then(function(result) { return Promise.resolve("bbb"); }) .then(function(result) { console.log(result); }); เรียกใช้ข้อมูลโค้ดซ่อนผลลัพธ์ขยายตัวอย่างข้อมูล ฉันกำลังถามว่าฉันได้รับพฤติกรรมที่แตกต่างโดยใช้บริการ Angular และ $ http ด้วยการผูกมัด. แล้ว () รหัสน้อยเกินไปดังนั้นก่อนตัวอย่างข้างต้น

10
การรับ ng-object ที่ถูกเลือกด้วย ng-change
รับองค์ประกอบเลือกต่อไปนี้ <select ng-options="size.code as size.name for size in sizes " ng-model="item.size.code" ng-change="update(MAGIC_THING)"> </select> มีวิธีใดที่จะทำให้ MAGIC_THING มีขนาดเท่ากับขนาดที่เลือกไว้ในปัจจุบันดังนั้นฉันสามารถเข้าถึงsize.nameและsize.codeควบคุมได้หรือไม่? size.code มีผลต่อส่วนอื่น ๆ ของแอป (URL รูปภาพ ฯลฯ ) แต่เมื่อitem.size.codeมีการอัปเดตรูปแบบ ng item.size.nameจะต้องได้รับการอัปเดตเช่นกันสำหรับผู้ใช้ที่กำลังเผชิญกับสิ่งต่าง ๆ ฉันคิดว่าวิธีที่ถูกต้องในการทำเช่นนี้คือการบันทึกเหตุการณ์การเปลี่ยนแปลงและการตั้งค่าภายในคอนโทรลเลอร์ของฉัน แต่ฉันไม่แน่ใจว่าฉันจะส่งผ่านการอัปเดตเพื่อรับค่าที่เหมาะสมได้อย่างไร หากนี่เป็นวิธีที่ผิดไปโดยสิ้นเชิงฉันชอบที่จะรู้วิธีที่ถูกต้อง
313 angularjs 

11
วิธีที่สั้นที่สุดในการอ่านพารามิเตอร์ข้อความค้นหาใน AngularJS คืออะไร
ฉันต้องการอ่านค่าของพารามิเตอร์การค้นหา URL โดยใช้ AngularJS ฉันกำลังเข้าถึง HTML ด้วย URL ต่อไปนี้: http://127.0.0.1:8080/test.html?target=bob เป็นที่คาดหวังคือlocation.search "?target=bob"สำหรับการเข้าถึงคุณค่าของเป้าหมายฉันได้พบตัวอย่างต่าง ๆ ที่ระบุไว้บนเว็บ แต่ไม่มีพวกเขาทำงานใน AngularJS 1.0.0rc10 โดยเฉพาะอย่างยิ่งต่อไปนี้คือทั้งหมดundefined: $location.search.target $location.search['target'] $location.search()['target'] ใครรู้ว่าจะทำงานอย่างไร (ฉันใช้$locationเป็นพารามิเตอร์ในการควบคุมของฉัน) ปรับปรุง: ฉันโพสต์โซลูชันด้านล่าง แต่ฉันไม่พอใจกับมันทั้งหมด เอกสารที่คู่มือนักพัฒนาซอฟต์แวร์: บริการเชิงมุม: การใช้ $ locationระบุสิ่งต่อไปนี้$location: ฉันควรใช้ตำแหน่ง $ เมื่อใด เมื่อใดก็ตามที่แอปพลิเคชันของคุณต้องการตอบสนองต่อการเปลี่ยนแปลงใน URL ปัจจุบันหรือหากคุณต้องการเปลี่ยน URL ปัจจุบันในเบราว์เซอร์ สำหรับสถานการณ์ของฉันหน้าของฉันจะเปิดจากหน้าเว็บภายนอกพร้อมพารามิเตอร์การสืบค้นดังนั้นฉันจึงไม่ "ตอบสนองต่อการเปลี่ยนแปลงใน URL ปัจจุบัน" ต่อหนึ่งรายการ ดังนั้นอาจ$locationไม่ใช่เครื่องมือที่เหมาะสมสำหรับงาน (สำหรับรายละเอียดที่น่าเกลียดดูคำตอบของฉันด้านล่าง) ฉันได้เปลี่ยนชื่อของคำถามนี้จาก "วิธีอ่านพารามิเตอร์ข้อความค้นหาใน AngularJS โดยใช้ …
312 angularjs  ngroute 

23
วิธีการมีตัวเลือกเริ่มต้นในกล่องเลือก Angular.js
ฉันค้นหา Google และไม่พบสิ่งใดในสิ่งนี้ ฉันมีรหัสนี้ <select ng-model="somethingHere" ng-options="option.value as option.name for option in options" ></select> ด้วยข้อมูลบางอย่างเช่นนี้ options = [{ name: 'Something Cool', value: 'something-cool-value' }, { name: 'Something Else', value: 'something-else-value' }]; และผลผลิตก็เป็นแบบนี้ <select ng-model="somethingHere" ng-options="option.value as option.name for option in options" class="ng-pristine ng-valid"> <option value="?" selected="selected"></option> <option value="0">Something Cool</option> <option …

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.