개체가 비어 있는지 확인하고 ng-show에서는 작동하지만 컨트롤러에서는 작동하지 않습니까?
이렇게 선언 된 JS 개체가 있습니다.
$scope.items = {};
이 개체를 항목으로 채우는 $ http 요청도 있습니다. 이 항목이 비어 있는지 감지하고 싶습니다. ng-show가이를 지원하는 것 같습니다 ... 입력
ng-show="items"
그리고 마술처럼 작동합니다. 컨트롤러에서도 똑같이하고 싶지만 작동하지 않는 것 같습니다. 속성이 있는지 확인하기 위해 객체를 반복해야하거나 lodash 또는 밑줄을 사용해야 할 수 있습니다. .
대안이 있습니까?
나는 시도했다
alert($scope.items == true);
그러나 객체가 생성되고로 채워질 때 항상 false를 반환 $http
하므로 그렇게 작동하지 않습니다.
여기서는 빈 개체 리터럴을 사용할 필요가 없습니다. null 또는 undefined를 사용할 수 있습니다.
$scope.items = null;
이런 식으로 ng-show
계속 작동해야하며 컨트롤러에서 다음을 수행 할 수 있습니다.
if ($scope.items) {
// items have value
} else {
// items is still null
}
그리고 $http
콜백에서 다음을 수행합니다.
$http.get(..., function(data) {
$scope.items = {
data: data,
// other stuff
};
});
또는 다음과 같이 간단하게 유지할 수 있습니다.
alert(angular.equals({}, $scope.items));
개인 프로젝트에서이 필터를 작성했습니다.
angular.module('myApp')
.filter('isEmpty', function () {
var bar;
return function (obj) {
for (bar in obj) {
if (obj.hasOwnProperty(bar)) {
return false;
}
}
return true;
};
});
용법:
<p ng-hide="items | isEmpty">Some Content</p>
테스트 :
describe('Filter: isEmpty', function () {
// load the filter's module
beforeEach(module('myApp'));
// initialize a new instance of the filter before each test
var isEmpty;
beforeEach(inject(function ($filter) {
isEmpty = $filter('isEmpty');
}));
it('should return the input prefixed with "isEmpty filter:"', function () {
expect(isEmpty({})).toBe(true);
expect(isEmpty({foo: "bar"})).toBe(false);
});
});
문안 인사.
또 다른 간단한 한 줄 :
var ob = {};
Object.keys(ob).length // 0
항목 OBJ가 null과 같지 않은 경우 다음을 수행 할 수 있습니다.
$scope.isEmpty = function (obj) {
for (var i in obj) if (obj.hasOwnProperty(i)) return false;
return true;
};
보기에서 다음을 수행 할 수 있습니다.
<div ng-show="isEmpty(items)"></div>
넌 할 수있어
var ob = {};
Object.keys(ob).length
브라우저가 ECMAScript 5를 지원하는 경우에만 해당됩니다. 예를 들어 IE 8은이 기능을 지원하지 않습니다.
자세한 정보는 http://kangax.github.io/compat-table/es5/ 참조
if( obj[0] )
이것의 더 깨끗한 버전은 다음과 같습니다.
if( typeof Object.keys(obj)[0] === 'undefined' )
개체 속성이 설정되지 않은 경우 결과가 정의되지 않습니다.
또는 lo-dash를 사용하는 경우 : _.empty (value).
"값이 비어 있는지 확인합니다. 길이가 0 인 배열, 문자열 또는 인수 개체와 고유 한 열거 가능한 속성이없는 개체는"빈 "것으로 간주됩니다."
빈 개체 확인
$scope.isValid = function(value) {
return !value
}
you can check length of items
ng-show="items.length"
'programing tip' 카테고리의 다른 글
Qt가 모델 / 뷰 용어를 오용하는 이유는 무엇입니까? (0) | 2020.08.22 |
---|---|
libxml / tree.h 해당 파일 또는 디렉토리 없음 (0) | 2020.08.21 |
Cocoapods 설정이 터미널의 포드 설정 명령에서 멈춤 (0) | 2020.08.21 |
데이터 바인딩을 사용하여 리소스의 문자열을 XML의 동적 변수와 결합하는 방법은 무엇입니까? (0) | 2020.08.21 |
Chart.js에서 차트 높이 설정 (0) | 2020.08.21 |