2017-09-05 10 views
0

사용자 목록을 선택할 수있는 필터 버튼과 사용자 목록이있는 PDF를 볼 수있는 버튼이있는 간단한 페이지가 있습니다.Knockout.JS "변수가 함수가 아닙니다."

직접 PDF보기를 클릭하면 페이지가 올바르게로드됩니다. 페이지를 필터링 한 다음 동일한 PDF보기 버튼을 실행하면 "user.userID()가 함수가 아닙니다"라는 문구가 표시됩니다.

두 가지 경우 모두 아래 코드를 사용합니다. 필터링 후 오류가 발생 했습니까?

for user in viewModel.users() 
    if user.isChecked() 
     tempusers += user.userID() + ',' 
+0

user.userID가 관찰 가능합니까? 오류 메시지를 기반으로, 나는 그것이 아닌 것 같아요. –

+0

나는 self.users = ko.observableArray ([])를 가지고 있습니다. 배열을 사용하기 위해서는 배열 내의 모든 요소를 ​​선언해야합니까? –

+0

관찰 가능하게하고 싶다면, 관찰 가능이라고 선언해야합니다. 당신의 코드는 아마'()'없이 작동 할 것입니다. –

답변

0

넉 아웃 관측 값은 함수에 해당하므로 값에 액세스하려면 괄호()가 필요합니다. 사용자를 self.users = ko.observableArray([])으로 설정하면 사용자 모음 (self.users)을 볼 수 있으며 해당 개체에 문제가 발생하면 변경 사항이 표시됩니다. 컬렉션에 포함 된 개체 (및 해당 개체의 속성)는 자동으로 관찰 할 수 없으므로 개체를 추가 할 때이를 설정해야합니다.

당신은 '사용자'개체에 액세스 할 수 있어야하고 관찰 할 수없는 경우는 다음과 같이 괄호없이 속성입니다 :

for user in viewModel.users() 
    if user.isChecked 
     tempusers += user.userID + ',' 

당신의 '사용자는'관찰되었고, 경우의 건물 인 ' 사용자 '가 관찰 가능했다면 다음과 같이해야 할 수도 있습니다. user().isChecked();