AngularJS 지시 전달 문자열
이 지시어는 페이지를 이동할 때 진행률을 추적하는 진행률 표시줄이라는 HTML 요소를 생성하려고 합니다.다음과 같이 사용할 수 있도록 개발하려고 합니다.<progress-bar progress='1' max='6' error="true"></progress-bar>
^^의 정보를 html로 전달하고 정보를 처리하여 진행 표시줄을 적절하게 변경하려고 합니다.
이는 정수값을 받는 "progress" 및 "max"에 대해 작동하지만 어떤 이유로 "error"(문자열)를 처리하는 코멘트 아웃 코드가 문제를 일으킵니다.나는 앵귤러에 처음이야.JS 씨, 혹시 헷갈리거나 불명확하게 들린다면 죄송합니다.자세히/명료하게 해야 하는지 물어보세요.
app.directive('progressBar', function(){
var compileProgressBar = function(scope, elem, attrs) {
var append = '<nav class="navbar navbar-fixed-bottom navbar-footer" role="navigation">\
<div class="container">\
<div class="row">';
var i = 1;
while (i <= parseInt(scope.max)) {
if (i <= parseInt(scope.progress)) {
//if (scope.error == "true"){
//...
//}
//else {
append += '<div class="col-xs-1"><div class="circle-filled"><center>'+i+'</center></div></div>'
//}
} else {
append += '<div class="col-xs-1"><div class="circle-hallow"><center>'+i+'</center></div></div>'
}
i++;
}
append += '</div></div></nav>'
elem.append(append);
elem.bind('click', function(){
if (scope.progress > 1) {
history.back();
scope.$apply();
}
});
}
return {
restrict: 'AE',
scope: {
max: '=max',
progress: '=progress'
//error: '=error'
},
link: compileProgressBar
}
});
지시문에서는 글로벌 범위에서 지시 로컬 범위로 속성의 양방향 바인딩을 사용하고 있습니다.
이 모드에서는 html 내의 Atribut값이 식으로서 평가되므로 디렉티브는 true를 식으로서 평가한 결과에 로컬 scope.error를 바인드하려고 합니다.
테스트 시scope.error == "true"
, 실제로 테스트하고 있습니다.true == "true"
javascript에서는 false로 평가됩니다.
문제를 해결하려면 다음 작업을 수행합니다.
디렉티브를 호출할 때 따옴표로 둘러싸인 문자열을 사용합니다.
<progress-bar progress='1' max='6' error="'true'"></progress-bar>
양방향 바인딩이 필요하지 않으므로 지시문에서 바인딩 모드를 변경할 수도 있습니다.@ 변수는 항상 문자열 유형입니다.
return { restrict: 'AE', scope: { max: '@max', progress: '@progress', error: '@error' }, link: compileProgressBar }
바인딩 모드에 대한 자세한 내용은 Angular $compile 문서를 참조하십시오.
언급URL : https://stackoverflow.com/questions/21001198/angularjs-directive-passing-string
'source' 카테고리의 다른 글
올바른 URL을 전달하려면 어떻게 해야 합니까?추가 앰퍼 및 문제 없이 JQuery 메서드에 대한 조치? (0) | 2023.02.17 |
---|---|
Grid Builder Visual Composer에서 변수의 게시 ID 가져오기 (0) | 2023.02.17 |
WP_Widget의 호출된 컨스트럭터 메서드는 버전 4.3.0 이후 사용되지 않습니다. (0) | 2023.02.17 |
다이렉티브 테스트에서 $140 대 $140 (0) | 2023.02.17 |
Facebook의 react.js 라이브러리 JSX 구문을 jslint로 잘 재생하려면? (0) | 2023.02.17 |