2012-12-19 3 views
2
나는 다음과 같은 코드를 사용하여 Breezejs를 사용하여 내 데이터베이스를 쿼리

:BreezeJS 자동 KnockoutJS 바인딩에 문자열로 저장된 숫자를 구문 분석하지 않습니다

viewModel = { 
    products = ko.observableArray([]) 
}; 

var manager = new entityModel.EntityManager('/api/Products'); 
manager.executeQuery(query) 
     .then(function (data) { 
      viewModel.products.removeAll(); 
      viewModel.products(data.results); 
     }); 

제품의 행을 사용하여 내 페이지에 연결된되는 수량과 같은 숫자 속성을 포함하지만를 data-bind 속성 manager.saveChanges()을 통해 모델을 저장하면 유효성 검사 오류가 발생합니다. 이는 KnockoutJS가 편집 된 숫자를 문자열로 저장하기 때문입니다.

이 문제를 해결하기위한 권장 방법은 무엇입니까?

답변

1

breeze v 0.80.2부터이 기능이 지원됩니다. (유형 강요를 사용자 정의하는 기능 포함)

+0

고마워, 이제 모든 사용자 정의 바인딩 핸들러는 쓸모가 없다. –

+0

죄송합니다! 코드를 단순화하는 것이 싫어 :) –

1

하나의 옵션은 CustomBinding을 만드는 것입니다.

나는 소수를 위해 이것을 사용

ko.bindingHandlers.decimal = { 
    init: function (element, valueAccessor, allBindingsAccessor, viewModel, bindingContext) { 
     $(element).blur(function() { 
      var value = valueAccessor(); 
      var valor = Globalize.parseFloat($(element).val()); 
      if (ko.isWriteableObservable(value)) { 
       value(valor); 
       ko.bindingHandlers.decimal.update(element, valueAccessor); 
      } 
     }); 
    }, 
    update: function (element, valueAccessor, allBindingsAccessor) { 
     var value = ko.utils.unwrapObservable(valueAccessor()); 
     $(element).val(Globalize.format(value, "n2")); 
    } 
}; 
+0

많은 경우에 유용한 유틸리티입니다. 나는 Breeze가 특정 상황 (예 : "Today", "Yesterday"등)을 특정 정밀도로 변환하거나 맞춤 요일 표기법을 DateTime 값으로 변환하는 등의 특수한 상황에 KO 바인딩을 유지하면서 일반 강제 변환을 처리해야한다고 생각합니다. Thx이 예제에 대한 비록. – Ward

0

그것은 좋은 질문입니다. 우리는 바람을 가지고 토론 한

현재

는, 바람은 바람에 정의 된대로 자동으로 (설정되는 속성의 데이터 유형에 일련의 작업 내에서 사용되는 값을 강요하려고 ... 강제 형 변환을 시도하지 않지만, 메타 데이터). 이것은 녹아웃뿐만 아니라 모든 바인딩 라이브러리 (각도, 백본 등)에 걸쳐 발생합니다.

바람에 User Voice을 추가하십시오. 우리는이 제출물을 매우 중요하게 생각합니다.

+1

특정 사용자 음성을 추가했습니다. http://breezejs.uservoice.com/forums/173093-breeze-feature-suggestions/suggestions/3474661-try-to-coerce-string-bindings-to-a-data- property- – Ward

+0

이 기능이 Breeze에 추가 된 것을 꼭보고 싶습니다. 방금 투표했습니다! –

관련 문제