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

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

3
ความหมายของ require: 'ngModel'?
นี่คือ HTML สำหรับคำสั่งของฉัน: <textarea data-modal="modal" data-mydir ng:model="abc"></textarea> ในคำสั่งของฉันฉันมีสิ่งนี้: return { require: 'ngModel', replace: true, scope: { modal: '=modal', ngModel: '=', pid: '=pid' }, ใครช่วยบอกหน่อยได้ไหมว่าความต้องการ: 'ngModel' มีความสำคัญอย่างไร ฉันเห็นสิ่งนี้ในคำสั่งต่างๆมากมาย ฉันสามารถเรียกสิ่งนี้ว่า data-modal ได้ไหม ฉันสับสนเพราะเมื่อฉันเปลี่ยนเป็น data-modal ฉันได้รับข้อความจาก Angular ว่า Controller 'ngModel', required by directive 'textarea', can't be found!
93 angularjs 

6
Angularjs ดัชนี $ ผิดหลังจาก orderBy
ฉันเพิ่งเริ่มใช้ Angular.js และมีปัญหาในการจัดเรียงอาร์เรย์ของฉันและทำงานกับข้อมูลที่เรียงลำดับนั้น ฉันมีรายการที่มีรายการและต้องการให้จัดเรียงตาม "Store.storeName" ซึ่งใช้งานได้แล้ว แต่หลังจากจัดเรียงข้อมูลฟังก์ชันลบของฉันไม่ทำงานอีกต่อไป ฉันคิดว่าเป็นเพราะดัชนี $ ผิดหลังจากการเรียงลำดับข้อมูลที่ไม่ถูกต้องจึงถูกลบ ฉันจะแก้ปัญหานั้นได้อย่างไร? จัดลำดับข้อมูลในขอบเขตและไม่อยู่ในมุมมอง? ต้องทำอย่างไร? นี่คือรหัสที่เกี่ยวข้อง: ในมุมมอง: <tr ng-repeat="item in items | orderBy:'Store.storeName'"> <td><input class="toggle" type="checkbox" ng-model="item.Completed"></td> <td>{{item.Name}}</td> <td>{{item.Quantity}} Stk.</td> <td>{{item.Price || 0 | number:2}} €</td> <td>{{item.Quantity*item.Price|| 0 | number:2}} €</td> <td>{{item.Store.storeName}}</td> <td><a><img src="img/delete.png" ng-click="removeItem($index)">{{$index}}</a></td> </tr> และในคอนโทรลเลอร์ของฉันฉันมีฟังก์ชั่นการลบนี้ซึ่งควรลบข้อมูลเฉพาะ: $scope.removeItem = function(index){ $scope.items.splice(index,1); } …

6
เอาต์พุตสตริง JSON รูปแบบ AngularJS
ฉันมีแอปพลิเคชัน AngularJS ซึ่งรวบรวมข้อมูลจากอินพุตแปลงโมเดลเป็นสตริงโดยใช้JSON.stringify()และให้ผู้ใช้แก้ไขโมเดลนี้ในลักษณะที่ฟิลด์อินพุตจะได้รับการอัปเดตหาก<textarea>องค์ประกอบได้รับการอัปเดตและในทางกลับกัน การผูกสองทางบางประเภท :) ปัญหาคือ String นั้นดูน่าเกลียดและฉันต้องการจัดรูปแบบให้มีลักษณะดังนี้: และไม่เหมือนตอนนี้: ความคิดใด ๆ ที่สามารถทำได้? หากคุณต้องการข้อมูลเพิ่มเติมโปรดอย่าลังเลที่จะถาม ทุกคำตอบขอชื่นชมและตอบทันที ขอขอบคุณ. ป.ล. ฉันเดาว่านี่น่าจะเป็นคำสั่งหรือฟิลเตอร์ที่กำหนดเอง ข้อมูลเองไม่ควรเปลี่ยนแปลงเฉพาะเอาต์พุตเท่านั้น

4
ประเภท ui-bootstrap เชิงมุมเรียกกลับบน selectMatch?
ฉันใช้หัวพิมพ์ ui-bootstrap เชิงมุมและฉันต้องการใช้เป็นวิธีเลือกตัวเลือกมากมายดังนั้นฉันต้องได้รับค่าที่เลือกเมื่อเปิดใช้เมธอด selectMatch แต่ฉันไม่พบวิธีการทำ ที่อยู่ในคอนโทรลเลอร์ของฉัน <div class='container-fluid' ng-controller="TypeaheadCtrl"> <pre>Model: {{selected| json}}</pre> <input type="text" ng-model="selected" typeahead="state for state in states | filter:$viewValue"> หากฉันดูค่าที่เลือกฉันจะได้รับการเปลี่ยนแปลงทุกครั้งที่กดปุ่ม ... scope.$watch('selected', function(newValue, oldValue) {... }); ฉันเข้าใจว่าเมธอด selectMatch เป็นวิธีที่เรียกว่าเมื่อผู้ใช้กด Enter หรือคลิกที่รายการ แต่ฉันไม่รู้ว่าจะโทรกลับได้อย่างไร ... ขอบคุณ!

5
AngularJS: ฉันจะตั้งค่าอินพุตเป็น $ valid ในคอนโทรลเลอร์ด้วยตนเองได้อย่างไร
การใช้ปลั๊กอินTokenInputและการใช้การตรวจสอบความถูกต้องของฟอร์มคอนโทรลเลอร์ในตัว AngularJS ตอนนี้ฉันกำลังพยายามตรวจสอบว่าฟิลด์มีข้อความหรือไม่จากนั้นตั้งค่าฟิลด์ให้ถูกต้องหากมี ปัญหาในการใช้ปลั๊กอินคือมันสร้างอินพุตของตัวเองจากนั้น ul + li สำหรับ stlying ฉันสามารถเข้าถึง addItem (formname) และความสามารถของฉันในคอนโทรลเลอร์ฉันแค่ต้องตั้งค่าเป็น $ valid มาร์กอัป <form class="form-horizontal add-inventory-item" name="addItem"> <input id="capabilities" name="capabilities" token-input data-ng-model="inventoryCapabilitiesAutoComplete" data-on-add="addCapability()" data-on-delete="removeCapability()" required> <div class="required" data-ng-show="addItem.capabilities.$error.required" title="Please enter capability."></div> </form> JS. $scope.capabilityValidation = function (capability) { if (capability.name !== "") { addItem.capabilities.$valid = true; addItem.capabilities.$error.required …

2
ฉันจะจัดเก็บบริบทผู้ใช้ปัจจุบันใน AngularJS ได้อย่างไร?
ฉันมี AuthService ซึ่งเข้าสู่ระบบผู้ใช้มันจะส่งคืนวัตถุ json ของผู้ใช้ สิ่งที่ฉันต้องการทำคือตั้งค่าออบเจ็กต์นั้นและให้การเปลี่ยนแปลงทั้งหมดสะท้อนให้เห็นทั่วทั้งแอปพลิเคชัน (สถานะล็อกอิน / ล็อกเอาต์) โดยไม่ต้องรีเฟรชหน้า ฉันจะทำสิ่งนี้ให้สำเร็จด้วย AngularJS ได้อย่างไร
92 angularjs 

8
Angularjs: input [text] ngChange เริ่มทำงานในขณะที่ค่ากำลังเปลี่ยนแปลง
ngChange กำลังเริ่มทำงานในขณะที่ค่ากำลังเปลี่ยนแปลง (ngChange ไม่เหมือนกับเหตุการณ์ onChange แบบคลาสสิก) ฉันจะผูกเหตุการณ์ onChange แบบคลาสสิกกับ angularjs ได้อย่างไรซึ่งจะเริ่มทำงานเมื่อมีการคอมมิตเนื้อหาเท่านั้น ผลผูกพันปัจจุบัน: <input type="text" ng-model="name" ng-change="update()" />
92 angularjs 

6
เหตุใดจึงใช้ if (! $ scope. $$ phase) $ scope. $ apply () an anti-pattern?
บางครั้งฉันจำเป็นต้องใช้$scope.$applyในโค้ดของฉันและบางครั้งก็แสดงข้อผิดพลาด "การสรุปข้อมูลที่กำลังดำเนินการอยู่" ดังนั้นผมจึงเริ่มที่จะหาทางรอบนี้และพบว่าคำถามนี้: AngularJS:. ป้องกันข้อผิดพลาด $ ย่อยแล้วในความคืบหน้าเมื่อโทร $ $ ขอบเขตใช้ () อย่างไรก็ตามในความคิดเห็น (และในวิกิเชิงมุม) คุณสามารถอ่าน: อย่าทำถ้า (! $ scope. $$ phase) $ scope $ apply () หมายความว่า $ ขอบเขตของคุณ $ apply () ไม่สูงพอใน call stack ตอนนี้ฉันมีสองคำถาม: เหตุใดจึงเป็นรูปแบบการต่อต้าน? ฉันจะใช้ $ scope อย่างปลอดภัย $ สมัครได้อย่างไร "วิธีแก้ปัญหา" อื่นเพื่อป้องกันข้อผิดพลาด "ไดเจสต์กำลังดำเนินการอยู่" ดูเหมือนว่ากำลังใช้ $ timeout: $timeout(function() { …

2
จะใช้คุณสมบัติ 'แทนที่' สำหรับคำสั่ง AngularJS ที่กำหนดเองได้อย่างไร?
เหตุใดจึงมีreplace=trueหรือreplace=falseไม่มีผลกระทบใด ๆ ในโค้ดด้านล่างนี้ เหตุใดจึงไม่แสดง "เนื้อหาที่มีอยู่บางส่วน" เมื่อแทนที่ = false หรือพูดให้ถ่อมตัวมากขึ้นคุณช่วยอธิบายได้ไหมว่าreplace=true/falseคุณลักษณะในคำสั่งคืออะไรและจะใช้อย่างไร ตัวอย่าง JS / เชิงมุม: <script> angular.module('scopes', []) .controller('Ctrl', function($scope) { $scope.title = "hello"; }) .directive('myDir', function() { return { restrict: 'E', replace: true, template: '<div>{{title}}</div>' }; }); </script> HTML: <div ng-controller="Ctrl"> <my-dir><h3>some existing content</h3></my-dir> </div> ดูใน Plunker ที่นี่: http://plnkr.co/edit/4ywZGwfsKHLAoGL38vvW?p=preview


17
ฉันจะ จำกัด อินพุตให้ยอมรับเฉพาะตัวเลขได้อย่างไร
ฉันใช้ ngChange ใน AngularJS เพื่อเรียกใช้ฟังก์ชันที่กำหนดเองซึ่งจะลบตัวอักษรใด ๆ ที่ผู้ใช้เพิ่มลงในอินพุต <input type="text" name="inputName" data-ng-change="numbersOnly()"/> ปัญหาคือฉันต้องกำหนดเป้าหมายอินพุตที่ทริกเกอร์numbersOnly()เพื่อที่ฉันจะได้ลบตัวอักษรที่ป้อน ฉันดู Google มานานและยากมากและไม่พบอะไรเกี่ยวกับเรื่องนี้ ฉันจะทำอะไรได้บ้าง?

2
AngularJS Directive element การผูก - TypeError: ไม่สามารถใช้ตัวดำเนินการ 'in' เพื่อค้นหา 'functionName' ใน 1
นี่คือตัวควบคุมของเทมเพลตหลัก: app.controller('OverviewCtrl', ['$scope', '$location', '$routeParams', 'websiteService', 'helperService', function($scope, $location, $routeParams, websiteService, helperService) { ... $scope.editWebsite = function(id) { $location.path('/websites/edit/' + id); }; }]); นี่คือคำสั่ง: app.directive('wdaWebsitesOverview', function() { return { restrict: 'E', scope: { heading: '=', websites: '=', editWebsite: '&' }, templateUrl: 'views/websites-overview.html' } }); นี่คือวิธีใช้คำสั่งในเทมเพลตหลัก: <wda-websites-overview heading="'All websites'" websites="websites" edit-website="editWebsite(id)"></wda-websites-overview> …

1
ไม่เคยแก้ไขสัญญาทำให้หน่วยความจำรั่ว?
ฉันมีPromise. ฉันสร้างมันขึ้นเพื่อยกเลิกคำขอ AJAX หากจำเป็น แต่เนื่องจากฉันไม่จำเป็นต้องยกเลิก AJAX นั้นฉันจึงไม่เคยแก้ไขเลยและ AJAX ก็ทำสำเร็จ ข้อมูลโค้ดแบบง่าย: var defer = $q.defer(); $http({url: 'example.com/some/api', timeout: defer.promise}).success(function(data) { // do something }); // Never defer.resolve() because I don't need to cancel that ajax. What happens to this promise after request? ไม่เคยแก้สัญญาเช่นนั้นทำให้หน่วยความจำรั่วไหล? คุณมีคำแนะนำเกี่ยวกับการจัดการPromiseวงจรชีวิตหรือไม่?

13
วิธีการแก้ไขข้อผิดพลาด "การทำซ้ำ 10 $ Digest () ถึง" เชิงมุม
ถึงการทำซ้ำ 10 $ Digest () แล้ว แท้ง! มีข้อความสนับสนุนจำนวนมากในความหมายของ "ผู้เฝ้าดูยิงในการทำซ้ำ 5 ครั้งล่าสุด:" ฯลฯ แต่ข้อความส่วนใหญ่นี้เป็นโค้ด Javascript จากฟังก์ชันต่างๆ มีกฎง่ายๆในการวินิจฉัยปัญหานี้หรือไม่? เป็นปัญหาที่สามารถบรรเทาได้เสมอหรือมีแอปพลิเคชันที่ซับซ้อนเพียงพอที่จะถือว่าปัญหานี้เป็นเพียงคำเตือนหรือไม่?
92 angularjs 

5
วิธีการล้างหรือหยุด timeInterval ใน angularjs?
ฉันกำลังทำการสาธิตซึ่งฉันกำลังดึงข้อมูลจากเซิร์ฟเวอร์หลังจากช่วงเวลาปกติโดยใช้$intervalNow ฉันจำเป็นต้องหยุด / ยกเลิกสิ่งนี้ ฉันจะบรรลุเป้าหมายนี้ได้อย่างไร? หากฉันต้องการเริ่มกระบวนการใหม่ฉันควรทำอย่างไร? ประการที่สองฉันมีอีกหนึ่งคำถาม: ฉันกำลังดึงข้อมูลจากเซิร์ฟเวอร์หลังจากช่วงเวลาที่ต้องการ มีความจำเป็นต้องใช้$scope.applyหรือ$scope.watch? นี่คือผู้ทำลายล้างของฉัน: app.controller('departureContrl',function($scope,test, $interval){ setData(); $interval(setData, 1000*30); function setData(){ $scope.loading=true; test.stationDashBoard(function(data){ console.log(data); $scope.data=data.data; $scope.loading=false; //alert(data); },function(error){ alert('error') }) ; } }); http://plnkr.co/edit/ly43m5?p=preview

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