반응형
ng-init을 사용하여 스코프 속성을 설정하려면 어떻게 해야 합니까?
ng-init를 사용하여 $scope 속성 값을 설정하려고 하는데 컨트롤러의 javascript에서 해당 값에 접근할 수 없습니다.내가 뭘 잘못하고 있지?여기 바이올린이 있습니다.http://jsfiddle.net/uce3H/
마크업:
<body ng-app>
<div ng-controller="testController" >
<input type="hidden" id="testInput" ng-model="testInput" ng-init="testInput='value'" />
</div>
{{ testInput }}
</body>
javascript:
var testController = function ($scope) {
console.log($scope.testInput);
}
javascrippt에서는 $scope.testInput이 정의되어 있지 않습니다.'가치'가 되어서는 안 되는가?
각도 할당을 완료하기 전에 설정 값을 읽으려고 합니다.
데모:
var testController = function ($scope, $timeout) {
console.log('test');
$timeout(function(){
console.log($scope.testInput);
},1000);
}
이상적으로는$watch
@Bereraba가 제안한 대로 타이머를 제거합니다.
var testController = function ($scope) {
console.log('test');
$scope.$watch("testInput", function(){
console.log($scope.testInput);
});
}
함수로 ng-init을 설정하기만 하면 됩니다.시계를 사용할 필요가 없습니다.
<body ng-controller="MainCtrl" ng-init="init()">
<div ng-init="init('Blah')">{{ testInput }}</div>
</body>
app.controller('MainCtrl', ['$scope', function ($scope) {
$scope.testInput = null;
$scope.init = function(value) {
$scope.testInput= value;
}
}]);
여기 예가 있어요.
HTML:
<body ng-app="App">
<div ng-controller="testController" >
<input type="hidden" id="testInput" ng-model="testInput" ng-init="testInput=123" />
</div>
{{ testInput }}
</body>
JS:
angular.module('App', []);
testController = function ($scope) {
console.log('test');
$scope.$watch('testInput', testShow, true);
function testShow() {
console.log($scope.testInput);
}
}
CodeHater가 말한 것처럼 변수가 설정되기 전에 접근합니다.
이를 수정하려면 ng-init 지시어를 첫 번째 div로 이동합니다.
<body ng-app>
<div ng-controller="testController" ng-init="testInput='value'">
<input type="hidden" id="testInput" ng-model="testInput" />
{{ testInput }}
</div>
</body>
잘 될 거야!
이 코드를 시험해 보세요
var app = angular.module('myapp', []);
app.controller('testController', function ($scope, $http) {
$scope.init = function(){
alert($scope.testInput);
};});
<body ng-app="myapp">
<div ng-controller='testController' data-ng-init="testInput='value'; init();" class="col-sm-9 col-lg-9" >
</div>
</body>
에 문제가 있었습니다.$scope.$watch
하지만 많은 테스트를 거쳐서 제가 알게 된 건data-ng-model="User.UserName"
이름이 안좋아서 제가 이름을 바꾼 후에data-ng-model="UserName"
모든 것이 잘 작동했다.제 예상으로는.
문제의 원인명을 지정합니다.
언급URL : https://stackoverflow.com/questions/19981627/how-to-set-scope-property-with-ng-init
반응형
'source' 카테고리의 다른 글
다른 스키마의 테이블에 대한 외부 키 참조 (0) | 2023.02.10 |
---|---|
get_categories()는 사용 중인 카테고리만 반환합니다. (0) | 2023.02.10 |
mysql 클라이언트(Linux)만 설치하는 방법이 있나요? (0) | 2023.02.06 |
PHP 타임스탬프를 DateTime에 입력 (0) | 2023.02.06 |
Laravel 웅변 쿼리에서 200만 행까지 시간이 오래 걸린다 (0) | 2023.02.06 |