2013-08-01 3 views
1

다음을 사용 가능하게하는 것은 내 HTML입니다 두 개의 계산 된 관찰 값을 사용하여 비활성화 된 버튼을 활성화합니다. 2 명의 comuputed observable 중 하나가 작동하지 않습니다.변경 부트 스트랩 버튼 클래스는 knockout.js

그러나 CSS 바인딩과 관련된 계산 된 관찰 가능 항목을 제거하면 텍스트 바인딩이 완벽하게 작동하는 것 같습니다.

Knockout.JS 코드에 두 개의 계산 된 변수를 추가 할 수없는 이유에 대한 도움말은 무엇입니까?

다음은 동일을 달성하기 위해 전체 자바 스크립트 코드 :

$(document).ready(function(){ 
function appModel(session_info){ 
    var temp = $.parseJSON(session_info); 
    this.userName = ko.observable(temp[0].user_name); 
    this.firstName = ko.observable(temp[0].first_name); 
    this.lastName = ko.observable(temp[0].last_name); 
    this.hotelName = ko.observable(""); 

    this.fullName = ko.computed(function(){ 
     return this.firstName() + " " + this.lastName(); 
    }, this); 

    this.enablebtn = ko.computed(function(){ 
     return this.hotelName().length() > 0 ? "enabled":"disabled"; 
    }, this); 

    this.sout = function(){ 
     $.ajax({ 
      url:"../api/sessions.php", 
      type:"get", 
      data: {rqtype: '0'}, 
      cache:false, 
      success:function(session_info){ 
       var data = $.parseJSON(session_info); 
       if (data.status == 'Invalid_id'){ 
        window.location.replace('../files/main.html'); 
       } 
      } 
     }); 
    } 
}; 

$.ajax({ 
    url:"../api/sessions.php", 
    type:"get", 
    data: {rqtype: '1'}, 
    cache:false, 
    success:function(session_info){ 
     var data = $.parseJSON(session_info); 
     if (data.status == 'Invalid_id'){ 
      window.location.replace('../files/main.html'); 
     } else { 
      ko.applyBindings(new appModel(session_info)); 
     } 
    } 
}); 

$(function(){ 
    $("#hotels").autocomplete({ 
     source:'../api/hotel_list_typehead.php', 
     minLength:2 
    }); 
}); 

});

그냥 정보 : 샘플 JSON

(Session_info:{"user_name":"[email protected]","first_name":"saurabh","last_name":"pradhan"}) 
+1

당신이 자바 스크립트 콘솔, 오류가 귀하의 브라우저를 확인해 봤어? – nemesv

답변

1

string.length 속성이 아닌 기능입니다. 따라서 enablebtn에는 ()의 추가 세트가 있습니다.

올바른 버전은 다음과 같아야합니다

this.enablebtn = ko.computed(function(){ 
    return this.hotelName().length > 0 ? "enabled":"disabled"; 
}, this); 
+0

완벽! 매력처럼 일 했어, 고마워. – Saurabh