시나리오는 JavaScript 및 AngularJS가있는 Sudoku 게임입니다.ng 변경을 트리거하지 않고 텍스트 입력 필드의 초기 값을 설정하십시오.
스도쿠 필드는 배열 (열)의 배열 (행)입니다. 모든 배열의 길이는 9입니다.이 스도쿠 필드 이름은 matrix
입니다. exampleMatrix()
함수는 이미 일부 필드가 채워진 행렬을 반환합니다.
updateValue(sudokuMatrix, row, col, val)
함수 값 val
에 매트릭스 sudokuMatrix
에 위치 로우 및 칼럼 row
col
에서 필드를 변경한다. 내가 원하는 무엇
function TestController($scope) {
$scope.matrix = exampleMatrix();
$scope.updateValue = updateValue;
$scope.getMatrixVal = function getMatrixVal(row, col) {
return $scope.matrix[row][col];
};
}
는 HTML의 <input type="text">
필드로 행렬의 모든 필드를 표시하는 것입니다. 모든 필드가 처음에 행렬에있는 값으로 설정되기를 원합니다. 텍스트 필드의 입력이 변경되면 $scope.matrix
개체에서 값을 업데이트하고 싶습니다.
나는 다음과 같은 HTML/AngularJS와 코드와 문제없이 행렬의 값으로 필드를 채울 수 :
<div ng-repeat="(rowIndex,row) in matrix track by $index">
<input type="text" size="1" value="{{col}}"
ng-repeat="(colIndex,col) in row track by $index">
</div>
그러나 나는 물론, 아직 $scope.matrix
객체의 값을 업데이트 할 수 없습니다. 내가 입력 필드의 값을 변경하면 내가 직면하고
문제점이
- 이다는
matrix
는 그 값을 업데이트해야합니다.ng-change="updateValue(matrix, rowIndex, colIndex, inputVal)"
으로이 작업을 수행 할 수 있습니다.ng-change
과 범위에서matrix
를 변경 가능하도록하기 위해 - , I는 변수 필드의 입력을 결합하는
ng-model
을 필요 I는 두 라인을 추가하는 경우ng-model="inputVal"
- 입력 필드가없는 스코프의
matrix
객체의 값으로 초기 값을 채 웁니다.
현재의 코드는 다음과 같습니다
<div ng-repeat="(rowIndex,row) in matrix track by $index">
<input type="text" size="1" value="{{getMatrixVal(rowIndex, colIndex)}}"
ng-model="inputVal"
ng-change="updateValue(matrix, rowIndex, colIndex, inputVal)"
ng-repeat="(colIndex,col) in row track by $index">
</div>
내 생각 엔 사이트가 생성 될 때, ng-model
이 inputVal
에 입력 필드의 빈 값을 할당하는 것입니다, 그리고 ng-change
즉시 트리거된다. 따라서 행렬의 모든 필드에는 빈 값이 채워집니다. AngularJS는 오류를 던지지 않으므로 확신 할 수 없습니다. 어쨌든, 나는 여기서 손실을 입었고 초기 값을 필드에 쓰는 방법을 모르며 ng-change
만 나중에 호출해야합니다. 모든 도움에 감사드립니다.
JSFiddle : https://jsfiddle.net/30xkedmp/
자바 스크립트 : http://pastebin.com/8cge8BXs는 HTML : http://pastebin.com/X0YUPU4h
이 그것을 테스트하기 쉽게 될 수 있도록 당신이 당신의 코드를 배포 한 URL을 공유 할 수있을 것입니다 시도 할 수 있습니다? – GraveyardQueen
게시물 끝에 코드 링크가 추가되었습니다. 그래도 온라인으로 배포하지 않았습니다. 죄송합니다. – GeckStar
바이올린을 만들면 쉽게 될 것입니다. https://jsfiddle.net/ – karman