After reviewing the code I found where the error occurs, and only after creating a complete contrived example for SO :). Call to isSearchCriteriaValid() should actually go through instance of vm. So it should be vm.isSearchCriteriaValid().
function performSearch()
{
vm.searchAttempted = true;
//if (isSearchCriteriaValid())
if (vm.isSearchCriteriaValid())
{
search()
}
}