Angular 편집기가 변수 초기화에 실패했습니다. 이유를 알고 계십니까? 다음은 Anglejs 초기화 실패에 대한 자세한 설명입니다.
이 글에서는 angularjs로 편집한 변수 초기화 실패 이유를 주로 소개합니다. 모두에게 도움이 되길 바라며, 이 글을 함께 읽어보시죠
편집 초기화, 편집 항목을 클릭하여 얻은 id
에 따라 백그라운드에서 이 id
를 얻어옵니다. 모든 정보를 입력한 다음 해당 필드를 첫 페이지로 초기화합니다. id
,从后台获取这个id
的所有信息,然后将对应的字段初始化给前台的页面。
大部分的时候我们都不需要做什么特殊处理,因为当我们获取到了对象,通过angularjs
的双向绑定就会直接为我们做好初始化的工作。但是为什么这次我单拿出来记录呢?必然是有不同的地方。
这次编辑出现问题的点主要是在前台设计的时候,其中有个字段是精确度单位
,但是在选择单位的时候,要先选择单位的类别,而实体中又没有类别这个字段,所有就自己添加个字段,以便达到下面的效果:
先选中前面的类别下拉框,然后再点选想要的单位。
问题产生原因
先看下我们对类别
的处理
使用下划线_
的意思就是这个变量是我们自己定义的。这就意味着,我们上面说的第一步,根据id
获取过来的对象并没有这个属相,要是让前台显示出这个类别,就需要我们自己定义一个,并赋值。这也就是标题上所说的变量
。
过程
1.最开始定义的时候,就是在直接赋值的:
$scope.data._accuracyMeasurementUnitCategory = $scope.data.primaryParameterCategory.accuracyUnitSet[0].measurementUnitCategory;
但是这种赋值方式并不行,界面上并没有显示出来。
2.联想到前一阵遇到过一个类似的问题,问题的原因就是在angular
在进行第一次渲染的时候,$scope.data
还没有值,所以没有附上值。所以就将初始化放在回调函数中去执行:
发现还是没有成功。
3.然后对其进行监听,发现并不是没有赋值,而是赋值之后又被默认选项请选择
给覆盖掉了,所以就一直显示出这个样子:
看到这里就好办了,只要监听一下变量,当他发生改变
,并且改变后的newValue
是请选择
,那么我就对其进行初始化赋值。
$scope.$watch('data._accuracyMeasurementUnitCategory', function(newValue) { if (newValue && newValue.name === '请选择') { $scope.data._accuracyMeasurementUnitCategory = $scope.data.primaryParameterCategory.accuracyUnitSet[0].measurementUnitCategory; } });
这次成功绑定,但是好像实现的并不好:
打开控制台,可以看到出现了如上的错误:$digest达到最大迭代次数。
通过一番查找,最后找到了出现这个Error
的原因。
因为在指令中已经对类别
进行了初始化处理,将其设置为请选择
,然后我们又在控制器
中对他进行监听,当我们他产生变化并且值为请选择
的时候,给他一个新的值。
而我们知道,angular
会进行多次渲染,在指令每次渲染的时候,都设置成一次请选择
,而控制器监听到又会改变,这就产生了循环。
这时候$digest
就会遍历循环,巡查$watch
是否发生变化。然后防止无限循环下去,$digest
设置了一个最大上限,所以就出现上面截图的报错。
4.看着这一大片的红,让我感觉很是不好。考虑到我现在只是想实现简单的赋值,那使用比较简单的方法好像也不错。所以就考虑使用$timeout
来帮助实现功能,他会等一段时间后,告诉$digest
angularjs
의 양방향 바인딩이 객체를 직접 초기화하기 때문입니다. 그런데 이번에는 왜 따로 녹음한 걸까요? 뭔가 다른 것이 있어야합니다. 이 편집의 문제점은 주로 프런트 엔드 디자인 중에 발생합니다. 필드 중 하나가 정밀 단위
인데, 단위를 선택할 때 먼저 단위의 카테고리를 선택해야 하며, 엔터티 카테고리 필드가 없으므로 필드를 직접 추가하면 다음 효과를 얻을 수 있습니다.

문제 원인
🎜먼저카테고리
처리를 살펴보겠습니다🎜🎜🎜
_
을 사용한다는 것은 이 변수가 직접 정의되었음을 의미합니다. 이는 위에서 언급한 첫 번째 단계에서 id
를 기반으로 얻은 객체에 이 속성이 없다는 것을 의미합니다. 이 카테고리를 프런트 데스크에 표시하려면 직접 정의해야 합니다. 값을 할당합니다. 제목에 변수
라고 적혀 있습니다. 🎜Process
🎜1. 처음 정의되었을 때 직접 할당되었습니다: 🎜// 初始化主参量的单位 $timeout(function() { $scope.data._accuracyMeasurementUnitCategory = $scope.data.primaryParameterCategory.accuracyUnitSet[0].measurementUnitCategory; }, 100);🎜그러나 이 할당 방법은 불가능하며 인터페이스에 표시되지 않습니다. 🎜🎜2. 얼마 전에 비슷한 문제가 발생한 것 같습니다.
angular
가 처음 렌더링될 때 $scope.data
가 발생했기 때문입니다. 여전히 거기에 가치가 없으므로 가치가 부여되지 않습니다. 따라서 실행할 콜백 함수에 초기화를 넣으세요: 🎜🎜🎜
선택해주세요
에 의해 덮어쓰기가 되어 항상 표시되는 것을 확인했습니다. 🎜🎜🎜🎜🎜🎜여기서 처리하기 쉽습니다. 변수를 변경
하면 변경된 newValue
가 선택
됩니다. , 그러면 초기화 할당을 수행합니다. 🎜rrreee🎜이번에는 바인딩은 성공했는데 구현이 좋지 않은 것 같습니다: 🎜🎜🎜
오류
의 원인을 찾았습니다. 🎜명령어에서🎜4. 이 넓은 빨간색 영역을 보면 기분이 매우 나빠집니다. 지금은 간단한 할당만 구현하고 싶다는 점을 고려하면 더 간단한 방법을 사용하는 것이 좋을 것 같습니다. 그래서 함수 구현을 돕기 위해범주
가 초기화되어 있으므로선택하세요
로 설정한 후Controller
로 이동하여 모니터링합니다. 변경되면 새 값을 지정하고 값은선택하세요
입니다.
그리고 우리는angular
가 여러 번 렌더링된다는 것을 알고 있습니다. 명령이 매번 렌더링될 때Please select
로 설정되고 컨트롤러가 모니터링하고 실행합니다. 변화는 순환을 만들어낸다.
이때$digest
는 루프를 순회하여$watch
가 변경되었는지 확인합니다. 그러면 무한 루프를 방지하기 위해$digest
에서 최대 상한값을 설정하므로 위 스크린샷과 같은 오류가 나타납니다.
$timeout
를 사용하는 것을 고려했습니다. 이 함수는 일정 시간 동안 기다린 다음 $digest
에 렌더링하도록 지시합니다. 이 시점에서 우리가 원하는 값을 사용할 수 있습니다. 🎜rrreee🎜🎜🎜🎜🎜🎜그렇습니다. 문제가 해결되었습니다. 🎜요약
기능을 구현하기 위해 좀 더 발전된 방법을 사용하려고 하면 벽에 부딪힐 가능성이 높습니다. 이때는 충분히 축적되지 않았다는 의미일 뿐이므로 간단한 방법으로 바꾸는 것이 더 나은 선택입니다. Angularjs에 대해 더 알고 싶다면 PHP 중국어 웹사이트 angularjs 참조 매뉴얼 칼럼에서
[편집자 추천]
Angularjs 표현식을 사용하는 방법을 알아보세요. Anglejs 표현식의 사용 예
Angularjs 필터를 사용할 수 있나요? Anglejs 필터에 대한 자세한 설명을 살펴보겠습니다
위 내용은 Angular 편집기가 변수 초기화에 실패했습니다. 이유를 알고 계십니까? 다음은 Anglejs 초기화 실패에 대한 자세한 설명입니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

일상적인 기술 도구를 사용하여 기능적 다중 테넌트 SaaS 응용 프로그램 (Edtech 앱)을 구축했으며 동일한 작업을 수행 할 수 있습니다. 먼저, 다중 테넌트 SaaS 응용 프로그램은 무엇입니까? 멀티 테넌트 SAAS 응용 프로그램은 노래에서 여러 고객에게 서비스를 제공 할 수 있습니다.

이 기사에서는 Contrim에 의해 확보 된 백엔드와의 프론트 엔드 통합을 보여 주며 Next.js를 사용하여 기능적인 Edtech SaaS 응용 프로그램을 구축합니다. Frontend는 UI 가시성을 제어하기 위해 사용자 권한을 가져오고 API가 역할 기반을 준수하도록합니다.

JavaScript는 현대 웹 개발의 핵심 언어이며 다양성과 유연성에 널리 사용됩니다. 1) 프론트 엔드 개발 : DOM 운영 및 최신 프레임 워크 (예 : React, Vue.js, Angular)를 통해 동적 웹 페이지 및 단일 페이지 응용 프로그램을 구축합니다. 2) 서버 측 개발 : Node.js는 비 차단 I/O 모델을 사용하여 높은 동시성 및 실시간 응용 프로그램을 처리합니다. 3) 모바일 및 데스크탑 애플리케이션 개발 : 크로스 플랫폼 개발은 개발 효율을 향상시키기 위해 반응 및 전자를 통해 실현됩니다.

JavaScript의 최신 트렌드에는 Typescript의 Rise, 현대 프레임 워크 및 라이브러리의 인기 및 WebAssembly의 적용이 포함됩니다. 향후 전망은보다 강력한 유형 시스템, 서버 측 JavaScript 개발, 인공 지능 및 기계 학습의 확장, IoT 및 Edge 컴퓨팅의 잠재력을 포함합니다.

JavaScript는 현대 웹 개발의 초석이며 주요 기능에는 이벤트 중심 프로그래밍, 동적 컨텐츠 생성 및 비동기 프로그래밍이 포함됩니다. 1) 이벤트 중심 프로그래밍을 사용하면 사용자 작업에 따라 웹 페이지가 동적으로 변경 될 수 있습니다. 2) 동적 컨텐츠 생성을 사용하면 조건에 따라 페이지 컨텐츠를 조정할 수 있습니다. 3) 비동기 프로그래밍은 사용자 인터페이스가 차단되지 않도록합니다. JavaScript는 웹 상호 작용, 단일 페이지 응용 프로그램 및 서버 측 개발에 널리 사용되며 사용자 경험 및 크로스 플랫폼 개발의 유연성을 크게 향상시킵니다.

Python은 데이터 과학 및 기계 학습에 더 적합한 반면 JavaScript는 프론트 엔드 및 풀 스택 개발에 더 적합합니다. 1. Python은 간결한 구문 및 풍부한 라이브러리 생태계로 유명하며 데이터 분석 및 웹 개발에 적합합니다. 2. JavaScript는 프론트 엔드 개발의 핵심입니다. Node.js는 서버 측 프로그래밍을 지원하며 풀 스택 개발에 적합합니다.

JavaScript는 이미 최신 브라우저에 내장되어 있기 때문에 설치가 필요하지 않습니다. 시작하려면 텍스트 편집기와 브라우저 만 있으면됩니다. 1) 브라우저 환경에서 태그를 통해 HTML 파일을 포함하여 실행하십시오. 2) Node.js 환경에서 Node.js를 다운로드하고 설치 한 후 명령 줄을 통해 JavaScript 파일을 실행하십시오.

쿼츠 타이머를 사용하여 작업을 예약 할 때 미리 쿼츠에서 작업 알림을 보내는 방법 작업의 실행 시간은 CRON 표현식에 의해 설정됩니다. 지금...


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

SublimeText3 Linux 새 버전
SublimeText3 Linux 최신 버전

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

VSCode Windows 64비트 다운로드
Microsoft에서 출시한 강력한 무료 IDE 편집기

mPDF
mPDF는 UTF-8로 인코딩된 HTML에서 PDF 파일을 생성할 수 있는 PHP 라이브러리입니다. 원저자인 Ian Back은 자신의 웹 사이트에서 "즉시" PDF 파일을 출력하고 다양한 언어를 처리하기 위해 mPDF를 작성했습니다. HTML2FPDF와 같은 원본 스크립트보다 유니코드 글꼴을 사용할 때 속도가 느리고 더 큰 파일을 생성하지만 CSS 스타일 등을 지원하고 많은 개선 사항이 있습니다. RTL(아랍어, 히브리어), CJK(중국어, 일본어, 한국어)를 포함한 거의 모든 언어를 지원합니다. 중첩된 블록 수준 요소(예: P, DIV)를 지원합니다.
